使用PHP旋转图像时遇到一种非常奇怪的行为。旋转期间正在更改原始图像。作为示例,这里是并排图像。很难看,但如果仔细观察,刀周围的白色区域会从#FFFFFF改为#FDFDFD。
我使用的是没有指定选项的imagerotate,但是,如果我尝试使用黑色背景颜色的相同的东西,我会得到一个黑色"填充"的旋转图像,但图像的白色部分是仍然从#FFFFFF改为#FDFDFD。我很困惑。它几乎就像PHP一样"四舍五入"颜色。
原始图片:http://i.imgur.com/iYwvxAE.jpg
编辑:
这是我的代码
$img = imagecreatefromjpeg($localFile);
$img = imagerotate($img, 45, 0);
imagejpeg($img, '/tmp/a.jpg');
答案 0 :(得分:2)
我明白了!在php doc for imagerotate(http://php.net/manual/en/function.imagerotate.php)上我注意到了
然后我尝试了几种不同的插值算法。 IMG_BELL似乎保持白色。"注意:此函数受imagesetinterpolation()设置的插值方法的影响。"
<?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);