[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Неверная передача цветов при перекодировании изображения
DiCoS
Добрый день.
При изменении изображения при помощи РНР значительно уменьшается колличество цветов.
//$id - название будущего файла
//$photo - путь к исходному изображению
//$this->thumbSmall - путь к директории для будущего файла.
public function createPng($photo, $id)
{
//открыть jpeg изображение
$im = imagecreatefromjpeg($photo);
//создать изображение
$im2 = imagecreate(100, 100);
//скопировать часть изображения
//imagecopyresampled
imagecopyresized(
$im2, $im, 0, 0, 0, 0,
100, 100, imagesx($im), imagesy($im)
);
//записать изображение в файл
$thumb = $this->thumbSmall . $id . '.jpeg';
imagejpeg($im2, $thumb, 80);
}
изменял функции вместо imagejpeg - imagepng и imagegif результат тот же.
использую денвер Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8d PHP/5.2.4

_____________
Sylex
JPEG-cжатие – это сжатие с потерями. Оно основано на разложении изображений на составляющие, подобные тем, которые используются в механизме человеческого зрения, и отбрасывании информации, не сказывающейся на зрительном восприятии образа. За счет этого достигается высокое сжатие изображений при незначительном ухудшении качества. Даже задавая высокое качество, можно не добиться хороших результатов. Один из приемов состоит в том, чтобы уменьшить пропорционально, а не точно, т.е. если будет "лишняя часть", то обрезать. Существуют еще множество различных алгоритмов, позволяющих более качественно изменять размер. GD такими алгоритмами не обладает smile.gif.

http://webscript.ru/stories/02/11/11/9439190
http://www.php5.ru/articles/image?print

_____________
Я думал я буду сеять добро, но у меня не получилось. Во-первых, мне помешали, во-вторых я сам отрекся от этой идеи.
Sylex
и еще надо юзать imagecreatetruecolor и imagecopyresampled smile.gif Т.к. imagecopyresized работает тока с 255 цветами smile.gif

http://ru2.php.net/imagecreatetruecolor

_____________
Я думал я буду сеять добро, но у меня не получилось. Во-первых, мне помешали, во-вторых я сам отрекся от этой идеи.
qpayct
imagecreate > imagecreatemargin
DiCoS
Спасибо. Теперь проблема решена. clapping.gif

_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.