2016-12-08 1 views
0

PHP GD로 이미지 작업해야합니다. 문제는 원본 사진을 복사 할 때 색상이 동일하지 않다는 것입니다.adobeRGB 그림을 PHP로 sRGB로 변환 한 후 원점과 동일한 이미지를 얻을 수 있습니까

원래 그림 :

OriginalPicture

사람들의 sRGB PROFIL 대신 AdobeRPG에 내 JPG로 변환하는 나에게 말했다.

그래서 나는 그것을했다 :

$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); 

내가하지 동일한 크기와 동일한 품질이 정상이라고 알고있다. 작업

, 색상이 동일하지만, 지금 같은 contraste되지 않습니다 :

ConvertedImage

내가 페이스 북에 갔다, 그는 자신의 업로드 시스템에서하는 방법, 볼 내가 함께 노력 내 사진과 그것의 작품은 아주 좋아요. 그러나 나는 그들이 어떻게했는지 전혀 모른다.

+0

PHP 7.0.13을 사용하면 원본 이미지를 imagecopyresized()하여 색상을 변경하지 않고 출력 할 수 있습니다. 그래서, 원래의 문제는 무엇입니까 (imagick 사용 후 문제가 아닌가요?)? 이미지의 크기를 조정하거나 자르거나 회전하고 싶습니까? 그리고 어떤 버전의 PHP를 사용하고 있습니까? – timclutton

+0

문제는 당신이 할 수있는 일이지만 sRGB 프로파일이 아닙니다. 나는 그것을 풀어 내 질문에 답했습니다. 도와 줘서 고마워. –

답변

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 :

sRGB profiles

당신이 변화없이 (sRGB)의 모든 코드를 변환하기 위해, (exemple 당 크기 조정에 대한) GD로 이미지를 만들려면 원본 사진과 최종 사진 위의 코드로 변환해야합니다.

$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) ; 

이 정보가 도움이되기를 바랍니다.

관련 문제