이미지 처리 분야에서 여러 이미지의 통일을 달성하는 것은 특히 전자 상거래, 소셜 미디어, 사진 및 기타 산업에 적합한 일반적인 요구 사항입니다. PHP가 제공하는 imageecolormatch () 함수는 거의 알려져 있지 않지만이 목표를 달성하기위한 강력한 도구입니다. 이 기사는 imagecolormatch ()를 사용하여 배치로 색상 일치를 효율적으로 처리하고 완전한 예제 솔루션을 제공하는 방법을 소개합니다.
ImageColorMatch (Resource $ image1, Resource $ image2) : bool은 GD 라이브러리의 함수입니다. 이 기능은 $ image2 의 팔레트 색상을 $ image1 의 색상과 최대한 많이 일치시키는 것입니다. 이것은 $ image2 의 색상이 " $ image1 처럼 보이도록 시도하도록 조정되어 색상의 일관성을 달성한다는 것을 의미합니다.
ImageColorMatch ()는 팔레트 이미지 (즉 imageCreate ( )로 생성 된 비 트루 컬러 이미지) 만 처리 할 수 있으므로 사용하기 전에 이미지를 팔레트 이미지로 변환해야합니다.
모든 대상 이미지의 색상 참조로 "참조 이미지"를 준비하십시오.
보류중인 각 이미지를 읽고 팔레트 이미지로 변환하십시오.
색상 일치에 imageColorMatch ()를 사용하십시오.
결과를 새 이미지 파일로 저장하십시오.
다음은 여러 이미지의 색상 일치 처리를 구현하는 완전한 예제 스크립트입니다. 이미지 디렉토리 구조는 다음과 같습니다.
/images/
reference.jpg
img1.jpg
img2.jpg
...
/output/
(처리 된 사진을 저장하는 데 사용됩니다)
<?php
$referencePath = 'images/reference.jpg';
$sourceDir = 'images/';
$outputDir = 'output/';
// 참조 이미지를로드하고 팔레트 이미지로 변환하십시오.
$refImgTrueColor = imagecreatefromjpeg($referencePath);
$refImgPalette = imagecreate(imagesx($refImgTrueColor), imagesy($refImgTrueColor));
imagecopy($refImgPalette, $refImgTrueColor, 0, 0, 0, 0, imagesx($refImgTrueColor), imagesy($refImgTrueColor));
imagetruecolortopalette($refImgPalette, true, 256);
// 모든 디렉토리를 반복하십시오 jpg 문서
$files = glob($sourceDir . '*.jpg');
foreach ($files as $file) {
if ($file === $referencePath) continue; // 참조 이미지를 건너 뛰십시오
$srcTrueColor = imagecreatefromjpeg($file);
// 팔레트 이미지를 만듭니다
$srcPalette = imagecreate(imagesx($srcTrueColor), imagesy($srcTrueColor));
imagecopy($srcPalette, $srcTrueColor, 0, 0, 0, 0, imagesx($srcTrueColor), imagesy($srcTrueColor));
imagetruecolortopalette($srcPalette, true, 256);
// 색상 일치를 적용하십시오
imagecolormatch($refImgPalette, $srcPalette);
// 保存输出문서
$filename = basename($file);
imagejpeg($srcPalette, $outputDir . $filename);
// 기억을 청소하십시오
imagedestroy($srcTrueColor);
imagedestroy($srcPalette);
}
imagedestroy($refImgTrueColor);
imagedestroy($refImgPalette);
echo "처리가 완료되었습니다,문서已保存到 $outputDir";
?>
팔레트 이미지로 변환하는 것은 핵심 단계입니다 . 그렇지 않으면 imagecolormatch ()가 적용되지 않습니다.
팔레트 이미지의 색상 수가 제한되어 있기 때문에 출력 이미지는 어느 정도의 색상 왜곡을 경험할 수 있습니다 (최대 256).
많은 수의 이미지를 처리 해야하는 경우 명령 줄을 사용하여 스크립트를 실행하고 프로세스 제어 (예 : 배치 프로세싱)를 결합하여 효율성을 향상시키는 것이 좋습니다.
이 체계를 명령 줄 도구로 캡슐화하거나 자체 이미지 관리 시스템에 통합 할 수도 있습니다. 예를 들어, Laravel의 Artisan Command System을 결합하여 다음 호출 방법을 구현할 수 있습니다.
php artisan image:match-colors --reference=reference.jpg --input=images/ --output=output/
이미지 색상을 표준화 한 후, 전자 상거래 플랫폼에 제품 디스플레이인지 또는 사진 작품 시리즈의 디스플레이인지 여부에 관계없이 통일되고 전문적인 시각 효과를 얻을 수 있습니다.
효과의 데모를 보려면 다음 예제 사이트를 방문하여 테스트를 위해 자신의 참조 이미지 및 대상 이미지를 업로드 할 수 있습니다.
https://m66.net/demo/image-match
imagecolormatch ()를 합리적으로 활용함으로써, 우리는 이미지 품질의 일관성을 향상시킬뿐만 아니라 배치 프로세스의 노동 및 시간 비용을 크게 절약 할 수 있습니다. 이 기사가 신속하게 시작하고 자신의 이미지 색상 처리 도구 체인을 구축하는 데 도움이되기를 바랍니다.