![]() |
ImageCopyResized() Потеря цвета при сжатии изображений
Вложений: 1
Вот делаю галерею, начал делать превиюшки(уменьшенные исходные изображения), которые формируются при upload-e на сервер
примерно так: <? $img = ImageCreateFromJpeg($_GET{'image'}); $resize = (100*imagesy($img))/Imagesx($img);//здесь 100 это ширина сжатого изображения $img_small = ImageCreate(100, $resize); ImageCopyResized($img_small, $img, 0, 0, 0, 0, 100, $resize, Imagesx($img), imagesy($img)); ImageJpeg($img_small), 'small_'.$_GET{'image'}.'.jpg"); ?> Но при этом картинка полностью теряет свои изначальные цвета. PHP Version 4.3.9 все остальное на приаттаченном файле. Вот и вопрос: можно как нибудь сжать изображения средствами PHP без потери цвета. |
imagecreatetruecolor + imagecopyresampled
|
Писал тут функцию для загрузки джпегов для фотогалереи, на выходе вполне приличные результаты получил...
Приму советы по улучшению ;) Код:
<?php |
Просто заменил ImageCreate на imagecreatetruecolor и ImageCopyResized на imagecopyresampled(спасибо разработчикам PHP)
Большое спасибо. --- P.S.Еще один вопрос опять о галерее У меня в галерее не только jpeg'и и поэтому приходиться определять тип файла(кстати почему-то exif_imagetype undefinded function :confused: пришлось использовать getimagesize) и потом в зависимости от того какой тип делать imagecreatefrom* нет ли функции которая сама определяла бы тип файла и из него создавала image? P.P.S. 2Constantine: Не мог бы ты обьяснить смысл строк типа этих $relpath=($path=="") ? PHOTOPATH : PHOTOPATH.$path."/"; $ratiothumb=($height/$width > 1) ? $height/$maxthumbsize : $width/$maxthumbsize; Я имею ввиду не в твоем скрипте, а в принципе переменная = (условие) ? значение1 : значение2 |
В глобальной $_FILES['field']['type'] как раз и содержится тип файла в зависимости от неё и ветви...
переменная=(если...) то "это" в обратном случает "другое"; Альтернативная запись оператора if ... else |
Цитата:
Цитата:
|
Цитата:
для определения типа надо использовать: http://php.net/getimagesize |
Цитата:
|
| Часовой пояс GMT +4, время: 16:07. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.