2011-12-30 2 views
5

다음 스크립트를 사용하여 폴더에 이미지를 저장하고 있지만 "오류가있어 이미지를 표시 할 수 없습니다."라는 메시지가 하나있는 이미지가 있습니다.PHP를 사용하여 cmyk에서 rgb로

이미지에 cmyk 및 rgb라고하는 문제가 있다고 생각하지만 웹에서 검색 할 때 PHP를 사용하여 cmyk를 rgb로 변환 할 때이 작업을 수행하는 방법의 예를 찾을 수 없습니다.

다음은 예 : http://offshootinc.com/blog/2008/10/24/using-the-imagick-class-to-convert-a-cmyk-jpeg-to-rgb/입니다.하지만 내 경우에는 그것을 사용하는 방법을 알지 못합니다. www.example.com/attachment?id=2290

스크립트 다음과 같다 :

이미지에 대한 링크는 같은이 나중에 내가 좋아하는 뭔가를 사용하는 일부 페이지에서

<?php 
$image = 'http://www.dealrush.ie/attachment?id=2290'; 
$name = 'somename'; 
$alt = 'somealt'; 
$saveimage = file_get_contents($image); 
file_put_contents("/usr/local/pem/vhosts/155030/webspace/httpdocs/img/$name.jpg", $saveimage);?> 

이 이미지를 표시합니다. < IMG SRC = " http://www.example.com/img/ <?php echo $name?> .JPG " ALT = " <?php echo $alt?> " 높이 = " 127px " 폭 = " 190px "/>

이러한 이미지 변환과 상관 도움 감사합니다 감사합니다 다니엘

+0

이미지 파일이 손상되었을 수 있습니다. – sczizzo

+0

왜? 왜 그렇게 생각하니? – user983248

+0

일반적으로 "파일 XYZ는 오류가 있기 때문에 표시 할 수 없습니다"는 파일 XYZ가 손상되었거나 잘못된 파일 확장자를 가짐을 의미합니다. 어쨌든 CMYK-RGB 문제는 아닙니다. – sczizzo

답변

4

색상 공간 (CMYK 또는 RGB)이 사용자의 문제인지 의심 스럽습니다. 모든 사용자가 인터넷에서 RGB 이미지를 사용해야하지만 브라우저는 여전히 불만없이 CMYK 이미지를 표시합니다.

이미지를 CMYK에서 RGB로 변환하려면 ImageMagick, GraphicsMagick 또는 ExactImage와 같은 imagine 조작 프로그램이 설치되어 있어야합니다. 이 중 어떤 것도 원하는대로 할 수 있지만 서버 관리자가 설치해야합니다. ImageMagick이이 ExactImage가 가장 빠른, 가장 강력한이며, GraphicsMagick는 ImageMagick이의 민속이라고

$image= '/path/to/your/file.jpg'; 
$i = new Imagick($image); 
$i->setImageColorspace(Imagick::COLORSPACE_SRGB); 
$i->writeImage($image); 
$i->destroy(); 

참고 : 당신이 luckly 경우, ImageMagick이 이미있는 경우에 당신이 할 수있는, 설치되어있을 수 있습니다 빠르지 만 강력하지 않으며 버그가 있습니다. ImageMagick 만 PHP에서 사용할 수 있습니다. 다른 것들은 exec 함수로 실행해야합니다. PHP보다 자신의 메모리와 정리를 처리하는 것이 반드시 나쁜 것은 아닙니다.

+0

GraphicsMagick은 PHP에서 사용할 수 있습니다. [http://www.php.net/manual/en/book.gmagick.php] – Isius

2

CMYK는 additive가 아닌 subtractive light mixing을 사용하여 이미지를 인쇄하는 방법입니다. 아시는 바와 같이 RGB 색상은 빨간색, 녹색 및 파란색으로 구성되어 있으며 컴퓨터 모니터 또는 TV의 픽셀은 해당 색상을 방출합니다. 인쇄시 일반적으로 흰 종이가 사용됩니다. 적색, 녹색 및 청색 광의 100 %를 (거의) 반사합니다. 용지에 잉크를 놓으면 잉크가 그 색상 중 하나 이상을 흡수합니다. 그래서 빨간 잉크는 실제로 보통 종이에서 반사되는 녹색과 청색 빛을 흡수합니다. 인쇄시 빨강, 녹색 및 파랑의 보완 물을 사용합니다. 그것들은 청록색, 자홍색 및 황색입니다. CMY = 청록색, 자홍색, 황색. K는 검정을 의미합니다. RGB의 파란색은 이미 B이므로 B를 사용하지 않았습니다. 시안 색, 마젠타 색 및 노란색 잉크를 사용하여 멋진 짙은 검정색을 얻는 것이 어렵다는 것이 밝혀졌습니다 (가격이 비싸지 만 모두 3을 사용해야합니다!). 그래서 그들은 그것을 더보기 좋게하기 위해 약간의 순수한 흑색 (빛이 거의없는 것을 반영합니다)을 더합니다.

그렇다면 CMYK에서 RGB로 변환해야한다는 것을 의미합니다. 불행히도 그렇게 할 수있는 방법은 하나도 없습니다. Photoshop과 같은 것을 보면 변환하기 전에 에뮬레이션 할 잉크 및 용지 유형을 먼저 설정해야합니다.

검은 색 구성 요소가없는 순수한 CMY가있는 경우 r = 1.0 - c, g = 1.0 - m, b = 1.0 - y를 사용하여 이미지를 비교적 잘 추정 할 수 있습니다. this question의 첫 번째 응답은 합리적인 응답입니다.

Photoshop 또는 다른 응용 프로그램에서 사용하려는 특정 변환을 찾아서 그로부터 테이블을 만들 수도 있습니다. 이전에 1024x1024 크기의 이미지를 만들어 보았습니다. 각 32x32 정사각형은 x 방향으로 시안 색이 0에서 1로 변하고 y 방향으로 자홍색이 0에서 1로 향하는 기울기를 갖습니다. 그런 다음 왼쪽에서 오른쪽으로 갈수록 각 사각형의 황색이 증가하고 위에서 아래로 갈수록, 그들은 그들 안에 검은 양이 점점 증가하고 있습니다. Photoshop에 이미지를로드하고 RGB로 변환 한 다음 타일, 스트립 또는 레이어 (사용하기 쉽도록)가없는 무손실 형식 (TIFF와 같은)으로 다시 저장합니다. 그럼 내 애플 리케이션에로드하고 룩업 테이블로 RGB로 동일한 변환을 수행하는 데 사용합니다. 처음에는 약간 번거롭지만 일단 변환 테이블을 만들면 사용하기가 쉽습니다. 방금 RGB 값을 생성하기 위해 쌍선 보간법을 사용합니다.

관련 문제