imagerotate меняет цвет исходного изображения

Я сталкиваюсь с очень странным поведением при повороте изображений с помощью PHP. Исходное изображение изменяется во время поворота. В качестве примера приведем соседние изображения. Это трудно увидеть, но если вы посмотрите внимательно, белая область вокруг ножа меняется с #FFFFFF на #FDFDFD.

введите описание изображения здесь

Я использую imagerotate без указания параметров, однако, если я попробую то же самое с черным цветом фона, я получу повернутое изображение с черной «заливкой», но белая часть изображения все еще изменится с #FFFFFF на #FDFDFD , Я сбит с толку. Это почти как PHP «округляет» цвета.

введите описание изображения здесь

Исходное изображение: http://i.imgur.com/iYwvxAE.jpg

повернутое изображение: http://i.imgur.com/0lXXuO6.jpg

редактировать:

вот мой код

$img = imagecreatefromjpeg($localFile);
$img = imagerotate($img, 45, 0);
imagejpeg($img, '/tmp/a.jpg');

2

Решение

Я понял! На php doc для imagerotate (http://php.net/manual/en/function.imagerotate.php) Я заметил

«Примечание. На эту функцию влияет метод интерполяции, установленный функцией imagesetinterpolation ()».

Затем я попробовал несколько разных алгоритмов интерполяции. IMG_BELL, кажется, поддерживает белый цвет.

<?php
function LoadJpeg($imgname)
{
$im = imagecreatefromjpeg($imgname);
imagesetinterpolation($im, IMG_BELL);
$im = imagerotate($im, 45, 0);
return $im;
}

$img = LoadJpeg('test.jpg');

imagejpeg($img, 'C:\temp\a.jpg', 100);
imagedestroy($img);
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]