Добрый день.
При изменении изображения при помощи РНР значительно уменьшается колличество цветов.
//$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
_____________
JPEG-cжатие – это сжатие с потерями. Оно основано на разложении изображений на составляющие, подобные тем, которые используются в механизме человеческого зрения, и отбрасывании информации, не сказывающейся на зрительном восприятии образа. За счет этого достигается высокое сжатие изображений при незначительном ухудшении качества. Даже задавая высокое качество, можно не добиться хороших результатов. Один из приемов состоит в том, чтобы уменьшить пропорционально, а не точно, т.е. если будет "лишняя часть", то обрезать. Существуют еще множество различных алгоритмов, позволяющих более качественно изменять размер. GD такими алгоритмами не обладает
.
http://webscript.ru/stories/02/11/11/9439190http://www.php5.ru/articles/image?print
_____________
Я думал я буду сеять добро, но у меня не получилось. Во-первых, мне помешали, во-вторых я сам отрекся от этой идеи.
и еще надо юзать imagecreatetruecolor и imagecopyresampled
Т.к. imagecopyresized
работает тока с 255 цветами
http://ru2.php.net/imagecreatetruecolor
_____________
Я думал я буду сеять добро, но у меня не получилось. Во-первых, мне помешали, во-вторых я сам отрекся от этой идеи.
imagecreate > imagecreatemargin
Спасибо. Теперь проблема решена.
_____________