Суть проблемы в следующем, есть задача делать миниатюры(превьюшки картинок) средствами PHP, вообщем-то задача была мной успешно решена, была написана некая универсальная функция которая берёт на входе любойе файло типа(gif,jpg,png) и плющит его пропорционально до заданного размера.Но вот беда, качество ужасающее получаецца, картинки бледнеют, лиц не видно итд. итп. Вычитал на пхп.нет что проблема решается переписыванием кода пхп, но кто ж его даст переписать-то, когда хостишься очень далеко с очень неприветливым суппортом?
Может есть у кого решение,а?
>Суть проблемы в следующем, есть задача делать миниатюры(превьюшки картинок) средствами PHP, вообщем-то
>задача была мной успешно решена, была написана некая универсальная функция которая
>берёт на входе любойе файло типа(gif,jpg,png) и плющит его пропорционально до
>заданного размера.
>
>Но вот беда, качество ужасающее получаецца, картинки бледнеют, лиц не видно итд.
>итп. Вычитал на пхп.нет что проблема решается переписыванием кода пхп, но
>кто ж его даст переписать-то, когда хостишься очень далеко с
>очень неприветливым суппортом?
>
>Может есть у кого решение,а?
Мне тут в своё время подсказали:
надо использовать ImageCreateTrueColor вместо ImageCreate.
У меня всё заработало.
>>Суть проблемы в следующем, есть задача делать миниатюры(превьюшки картинок) средствами PHP, вообщем-то
>>задача была мной успешно решена, была написана некая универсальная функция которая
>>берёт на входе любойе файло типа(gif,jpg,png) и плющит его пропорционально до
>>заданного размера.
>>
>>Но вот беда, качество ужасающее получаецца, картинки бледнеют, лиц не видно итд.
>>итп. Вычитал на пхп.нет что проблема решается переписыванием кода пхп, но
>>кто ж его даст переписать-то, когда хостишься очень далеко с
>>очень неприветливым суппортом?
>>
>>Может есть у кого решение,а?
>Мне тут в своё время подсказали:
>надо использовать ImageCreateTrueColor вместо ImageCreate.
>У меня всё заработало.polzuj
resource imagecreatetruecolor ( int x_size, int y_size)
imagecreatetruecolor() returns an image identifier representing a black image of size x_size by y_size.Note: This function was added in PHP 4.0.6 and requires GD 2.0.1 or later
Note: This function will not work with GIF file formats.
>Суть проблемы в следующем, есть задача делать миниатюры(превьюшки картинок) средствами PHP, вообщем-то
>задача была мной успешно решена, была написана некая универсальная функция которая
>берёт на входе любойе файло типа(gif,jpg,png) и плющит его пропорционально до
>заданного размера.
>
>Но вот беда, качество ужасающее получаецца, картинки бледнеют, лиц не видно итд.
>итп. Вычитал на пхп.нет что проблема решается переписыванием кода пхп, но
>кто ж его даст переписать-то, когда хостишься очень далеко с
>очень неприветливым суппортом?
>
>Может есть у кого решение,а?ImageTrueColor решает только проблему с выбором неправильной палитры -- исчезает бледность, непонятные цвета, проч, но остается проблема с качеством -- на фотографии, например, при большом сжатии запросто могут пропасть глаза ;) -- забавные шаржи получаются :D
Решить это можно, используя утилиту convert, которая прилагается к ImageMagic. Стоит практически у всех хостеров под *nix'амиИспользовать можно примерно так
header("Content-type: ".$mime_type);
$command = 'convert -crop '.$immWidth.'x'.$immHeight.'+'.$xdist.'+'.$ydist.' '.$filename.' -|convert -geometry '.$intNeedWidth.'x'.$intNeedHeight.' - -';
PassThru($command, $retval);
где
$mime_type - MIME - тип исходного изображения
$immWidth, $immHeight - размеры исходного изображения с коррекцией на соответствие пропорциям желаемого preview$xdist, $ydist - смещение изображения с приведенными пропорциями относительно исходного изображения
$filenam - имя файла с исходным изображением
$intNeedWidth, $intNeedHeight - размеры превьюшки
Вообще там куча параметров.... Кроме того, работает с большим числом графических форматов.
Минус -- грузит сервер, поэтому лучше предусмотреть кэширование