За последние 24 часа нас посетили 32803 программиста и 1821 робот. Сейчас ищут 1633 программиста ...

проблема с imagecopyresized

Тема в разделе "Обработка изображений средствами PHP", создана пользователем DarkElf, 23 дек 2006.

  1. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    PHP:
    1. <?php
    2. $file_name = $_GET['image'];
    3. $newwidth = 150;
    4. $newheight = 175;
    5. $image = imagecreatefromjpeg("true_img.jpg");
    6. list($width,$height) = getimagesize($file_name);
    7. $source = imagecreatefromjpeg($file_name);
    8. imagecopyresized($image,$source,0,0,0,0,$newwidth,$newheight,$wifth,$height);
    9. imagejpeg($image,$file_name);
    10. ?>
    заменяет картинку из $source на черный квадрат, хотя, как я понимаю, должен приводить размеры картинки $source к своим..
     
  2. Mavir

    Mavir Guest

    Первое, что бросается в глаза - не правильно написаны переменые.

    list($width,$height) = getimagesize($file_name);
    ....
    imagecopyresized($image,$source,0,0,0,0,$newwidth,$newheight,$wifth,$height);
     
  3. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    >>Первое, что бросается в глаза - не правильно написаны переменые

    в этом и была проблема.
    спасибо.
     
  4. mms

    mms Активный пользователь

    С нами с:
    16 дек 2006
    Сообщения:
    36
    Симпатии:
    0
    скажите а есть просто функция imageresize? мне нужно просто уменьшить размер картинки пропорционально до заданного по вертикали или горизонтали.
     
  5. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    mms

    процитированный фрагмент с учетом исправления опечатки в нем делает именно это.
     
  6. mms

    mms Активный пользователь

    С нами с:
    16 дек 2006
    Сообщения:
    36
    Симпатии:
    0
    у меня этот код вставлял уменьшенное изображение себя в самого же себя
     
  7. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    mms

    мою опечатку в коде исправил?
     
  8. Self

    Self Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    13
    Симпатии:
    0
    Адрес:
    Москва
    PHP:
    1.  
    2.  
    3.    $image = imagecreatefromjpeg($big_file);
    4.    $or_width = imagesx($image);
    5.    $or_height = imagesy($image);
    6.    
    7.    if ($or_width >= $or_height)
    8.     {
    9.      $new_width=120;
    10.      $k = ceil($or_width / $new_width);
    11.      $new_height = ceil($or_height / $k);
    12.     } else
    13.     {
    14.      $new_height=120;
    15.      $k = ceil($or_height / $new_height);
    16.      $new_width = ceil($or_width / $k);
    17.     }
    18.    
    19.    $new_image = imagecreate($new_width, $new_height);
    20.    imagecopyresampled ($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $or_width, $or_height);
    21.    imagejpeg($new_image, $small_file, 100);
    22.  
    вот обработка изображения
    видно, что она делает эскиз, и вроде все нормально, но проблема в том, что некоторые эскизы изменяют цвет
    вот примеры:

    [​IMG] [​IMG]
     
  9. Mavir

    Mavir Guest

    Вместо imagecreate использовать imagecreatetruecolor.
     
  10. Self

    Self Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    13
    Симпатии:
    0
    Адрес:
    Москва
    о, спасибо!! мое нубство и нежелание читать man'ы меня иногда поражает :)