调整大小的图像变成绿色?有任何想法吗?

时间:2011-02-10 21:08:14

标签: php image-processing

我们在PHP中有一个非常标准的图像大小调整实现。然而,有些图像带有绿色色调。

这是原作: http://www.capitallightingfixture.com/product_images/3979WG-514.jpg

这是重新调整大小的: http://www.capitallightingfixture.com/product_images/5-3979WG-514.jpg

我检查了原始jpg上的颜色配置文件,它是RGB。

这是我的PHP的调整大小部分:

    if (function_exists("gd_info")){
        $dst_img = imagecreatetruecolor($thumb_width,$thumb_height);    
        }else{
        $dst_img = imagecreate($thumb_width,$thumb_height);     
        }

    if(@imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_width,$thumb_height,$origw,$origh)){
        }else{
        imagecopyresized($dst_img,$src_img,0,0,0,0,$thumb_width,$thumb_height,$origw,$origh);
        }       
    imagedestroy($src_img);

        imagejpeg($dst_img, '', 85);

1 个答案:

答案 0 :(得分:4)

RGB不是颜色配置文件,它是一个颜色空间。有效的颜色配置文件将是(例如)sRGB和Adobe RGB。如果您检查链接到的图像,您将看到原始图像嵌入了sRGB IEC61966-2.1颜色配置文件,并且调整大小没有颜色配置文件,因此它将根据假设具有的配置文件以不同方式显示。

不幸的是,我不认为PHP中的GD图像功能会关注颜色配置文件。您可以尝试通过Photoshop保存图像,然后将它们转换为通用sRGB配置文件,或使用ImageMagick进行大小调整(我相信 可以识别颜色配置文件)。