Какие есть либы для работы с img в php

Тема в разделе "PHP", создана пользователем Inviseble_Demon, 23 янв 2012.

Модераторы: latteo
  1. Inviseble_Demon

    Inviseble_Demon

    Регистр.:
    11 дек 2008
    Сообщения:
    482
    Симпатии:
    351
    Столкнулся с проблемой качества картинки после обработки изображения (увеличение).
    Использовал GD
    Может... хотя наверно точно имеются другие либы у которых качество на выходе будит лучше. Просто при увеличении программой качество раза в 2-3 лучше...
    Увеличение не такое уж и сильное..... примерно 20%
     
  2. prof.seo

    prof.seo Постоялец

    Регистр.:
    25 мар 2009
    Сообщения:
    60
    Симпатии:
    20
    imagemagick попробуй, на выходе качество лучше чем у gdlib
     
    Inviseble_Demon нравится это.
  3. uNknownMark

    uNknownMark

    Регистр.:
    22 сен 2007
    Сообщения:
    393
    Симпатии:
    169
    Как вариант слышал еще о:
    Cairo
    Exif
    Gmagick

    вроде из той же оперы
     
    Inviseble_Demon нравится это.
  4. Alternator

    Alternator

    Регистр.:
    23 мар 2009
    Сообщения:
    295
    Симпатии:
    145
    Код! Код! Код!
    Мы ж тут не сусликами меряемся!
    Где ваш код, после которого изображение теряет в качестве по сравнению с программой?!
    [telepatemode]
    у функции http://php.net/manual/ru/function.imagejpeg.php есть параметр отвечающий за качество выходящего изображения. аналогично у других аналогичных функций.
    И вы скорее всего вызываете эту функцию не передавая параметра, и получаете качество по умолчанию, которое для этой функции не является лучшим из возможных
    [/telepatemode]
     
  5. prof.seo

    prof.seo Постоялец

    Регистр.:
    25 мар 2009
    Сообщения:
    60
    Симпатии:
    20
    я осведомлен о том, что по умолчанию функция imagejpeg сохраняет изображение с потерей качества в 25%, так же хочу заметить, что использование библиотеки GD не ограничивает разработчика одной лишь только imagejpeg, есть еще imagepng, imagegif итп.. в которых нет параметра отвечающего за качество. Также, следует иметь ввиду, что GD ориентирована на динамическое создание изображений - различные счетчики, капчи итп и поэтому генерация изображения в GD почти в 30 раз быстрее чем в imagemagic. Напротив, imagemagic больше используется именно для работы с изображениями - ресайз, наложение эфектов, и например, изменение размеров в imagemagic происходит быстрее, а также он поддерживает больше типов изображений.. замеры по скорости не мои, прочитал не мало инфы когда не так давно знакомился и выбирал библиотеку под свои нужды. + ко всему, код imagemagec компактнее.
    в интернете полно примеров и сравнений, как этих двух библиотек, так и качества получаемых картинок.. не хочу заниматься копи-пастом, а своего готового кода, для наглядного сравнения этих библиотек у меня нет. но я могу его написать, так сказать - разберемся вместе :D
     
  6. Inviseble_Demon

    Inviseble_Demon

    Регистр.:
    11 дек 2008
    Сообщения:
    482
    Симпатии:
    351
    Alternator
    Я конечно познал только минимальные азы в PHP но не на столько что бы не знать о изменении качества при генерации картинки!
    Если так жаждиш кода то вот он.

    Ресайз картинки под квадрат (изначально был пропорциональный который быстро перековеркал под квадрат не искожая пропорции а обрезая)
    PHP:
    function SetImgSize($img$width$height$file='')
    {
        if (!
    is_file($img)) return false;
        
    $mime=getimagesize($img);
        
    $r=str_replace('image/'''$mime['mime']);
     
        switch (
    $r)
        {
            case 
    "gif":        {$srcImage ImageCreateFromGIF($img); break;}
            case 
    "png":        {$srcImage ImageCreateFromPNG($img); break;}
            case 
    "jpeg":    {$srcImage ImageCreateFromJPEG($img); break;}
            case 
    "jpg":        {$srcImage ImageCreateFromJPEG($img); break;}
        }
     
        
    $srcWidth  ImageSX($srcImage);
        
    $srcHeight ImageSY($srcImage);
     
        
    $dest imagecreatetruecolor($width$width);
     
        if (
    $srcWidth>$srcHeight)
        
    ImageCopyResampled($dest$srcImage00,
        
    round((max($srcWidth,$srcHeight)-min($srcWidth,$srcHeight))/2),
        
    0$width$widthmin($srcWidth,$srcHeight), min($srcWidth,$srcHeight));
     
        if (
    $srcWidth<$srcHeight)
        
    ImageCopyResampled($dest$srcImage0000$width$width,
        
    min($srcWidth,$srcHeight), min($srcWidth,$srcHeight));
     
        if (
    $srcWidth==$srcHeight)
        
    ImageCopyResampled($dest$srcImage0000$width$width$srcWidth$srcWidth);
     
        switch (
    $r)
        {
            case 
    "gif":        {$srcImage ImageGIF($dest$file90); break;}
            case 
    "png":        {$srcImage ImagePNG($dest$file9); break;}
            case 
    "jpeg":    {$srcImage ImageJPEG($dest$file90); break;}
            case 
    "jpg":        {$srcImage ImageJPEG($dest$file90); break;}
        }
     
        @
    ImageDestroy($srcImage);
        @
    ImageDestroy($resImage);
     
        return 
    true;
    }
    Почему же нету... Он имеется, только для png немного другой...
     
  7. Inviseble_Demon

    Inviseble_Demon

    Регистр.:
    11 дек 2008
    Сообщения:
    482
    Симпатии:
    351
    PS. Ставить качество 100 - бред полный прироста в качестве нету а размер бешеный по сравнению с 90.
     
  8. prof.seo

    prof.seo Постоялец

    Регистр.:
    25 мар 2009
    Сообщения:
    60
    Симпатии:
    20
    сейчас посмотрел, все верно ты написал, скорее всего в поисках хороших примеров я читал описание данных функций не с официального сайта и видимо автор упустил этот момент или я недочитал..
    я пользуюсь данной библиотекой для наложения текста на белый фон, поэтому не озадачивался вопросом качества изображения ибо и так все норм :)
     
  9. ajrengen

    ajrengen Постоялец

    Регистр.:
    28 сен 2008
    Сообщения:
    120
    Симпатии:
    32
    Я сменил GD на ImageMagick качество заметно лучше, при эктраполировании доступна дюжина фильтров, размер изображения в итоге получается меньше, чёткость выше.
     
  10. Inviseble_Demon

    Inviseble_Demon

    Регистр.:
    11 дек 2008
    Сообщения:
    482
    Симпатии:
    351
    ajrengen
    Проблема в том что картинку мне нужно из прямоугольника 200X180 сделать квадратом 200X200 так что я увеличиваю и обрезаю... Качество тут то и падает... (размеры другие это просто пример).