URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 1880
[ Назад ]

Исходное сообщение
"Плющим картинки в PHP imageresize"

Отправлено ubnormal , 13-Ноя-03 18:02 
Суть проблемы в следующем, есть задача делать миниатюры(превьюшки картинок) средствами PHP, вообщем-то задача была мной успешно решена, была написана некая универсальная функция которая берёт на входе любойе файло типа(gif,jpg,png) и плющит его пропорционально до заданного размера.

Но вот беда, качество ужасающее получаецца, картинки бледнеют, лиц не видно итд. итп. Вычитал на пхп.нет что проблема решается переписыванием кода пхп, но кто ж  его даст переписать-то, когда хостишься очень далеко с очень неприветливым суппортом?

Может есть у кого решение,а?


Содержание

Сообщения в этом обсуждении
"Плющим картинки в PHP imageresize"
Отправлено .zZz. , 14-Ноя-03 13:42 
>Суть проблемы в следующем, есть задача делать миниатюры(превьюшки картинок) средствами PHP, вообщем-то
>задача была мной успешно решена, была написана некая универсальная функция которая
>берёт на входе любойе файло типа(gif,jpg,png) и плющит его пропорционально до
>заданного размера.
>
>Но вот беда, качество ужасающее получаецца, картинки бледнеют, лиц не видно итд.
>итп. Вычитал на пхп.нет что проблема решается переписыванием кода пхп, но
>кто ж  его даст переписать-то, когда хостишься очень далеко с
>очень неприветливым суппортом?
>
>Может есть у кого решение,а?
Мне тут в своё время подсказали:
надо использовать ImageCreateTrueColor вместо ImageCreate.
У меня всё заработало.


"Плющим картинки в PHP imageresize"
Отправлено test , 14-Ноя-03 22:22 
>>Суть проблемы в следующем, есть задача делать миниатюры(превьюшки картинок) средствами 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 imageresize"
Отправлено zenon , 15-Ноя-03 10:44 
>Суть проблемы в следующем, есть задача делать миниатюры(превьюшки картинок) средствами 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 - размеры превьюшки

Вообще там куча параметров.... Кроме того, работает с большим числом графических форматов.

Минус -- грузит сервер, поэтому лучше предусмотреть кэширование