我必须使用PHP GD处理图像。问题是当我复制原始图片时,颜色不一样。
原始图片:
人们告诉我将我的jpg转换为sRGB profil而不是AdobeRPG。
所以我做到了:
$image = new Imagick($chemin_image);
// On enleve tout les profils qu'il y avait à la base
$image->profileImage('*' , false);
// Essayer de mettre en SRGB si ce n'est pas le cas
$icc_srgb = file_get_contents('../../admin-cache/profil_icc/sRGB_IEC61966-2-1_black_scaled.icc');
$image->profileImage('icc' , $icc_srgb);
$image->transformImageColorspace(13);
$image->writeImage($chemin_image);
我知道不一样的尺寸和相同的质量,是正常的。
那项工作,颜色是相同的,但现在不是相同的对比:
我去了Facebook,看看他是如何在自己的上传系统中做的,我尝试了我的照片并且它的工作非常好,但我不知道他们是如何做的。
答案 0 :(得分:0)
php的文档不完全正确,不要使用transformImageColorspace来做这些事情。
function ConvertirProfilEnSRGB($chemin_image){
if(class_exists('Imagick')) {
$final_image = new Imagick($chemin_image);
// Add profil
$icc_srgb = file_get_contents('profil_icc/sRGB_v4_ICC_preference.icc');
$final_image->profileImage('icc', $icc_srgb);
// On va écrire l'image à la fin
$final_image->writeImage($chemin_image);
}
}
在此处找到sRGB_v4_ICC_preference.icc:
如果你想用GD创建图像(对于每个例子调整大小),为了在不更改所有代码的情况下转换sRGB,你必须使用原始图片和最终图片上方的代码进行转换:
$pathToFile = $_FILES['myfile']['tmp_name'];
// First convert of original image
ConvertirProfilEnSRGB($pathToFile) ;
// GD with true color for best colors
$ImageChoisie = @imagecreatefromjpeg($pathToFile);
// Some code ...
// truecolor...
// Create final image
imagejpeg($ImageChoisie, $pathToFinalFile, 80);
// Add sRGB to final image
ConvertirProfilEnSRGB($pathToFinalFile) ;
我希望这会对你有所帮助。