2013-05-15 1 views
4

이미지 파일이 주어지면 이전 학교 16 색으로 변환하는 가장 좋은 방법은 무엇입니까? 오렌지, 마젠타, 라이트 블루, 옐로우, 라임, 핑크, 그레이, 라이트 그레이, 시안, 퍼플, 블루, 브라운, 그린, 레드,미리 정의 된 16 색으로 이미지 변환

소스 팔레트로 사용할 수있는 16 개의 색상이 모두 포함 된 1x16 픽셀 이미지를 만들었지 만 사용하는데 문제가 있습니다. 내가 원하는 (16 픽셀 데이터 이미지의 색상 팔레트를 가지고 신선한 이미지에 복사)입니다 imagepalettecopy()처럼 보이지만 코드는 I가 작동하지 않습니다 내놓았다 :

<?php 

$palette = imagecreatefrompng(__DIR__ . '/palette.png'); 

$source = imagecreatefromjpeg(__DIR__ . '/testimage.jpg'); 

$source_w = imagesx($source); 
$source_h = imagesy($source); 

$image = imagecreate($source_w, $source_h); 

imagepalettecopy($palette, $image); 

imagecopy($image, $source, 0, 0, 0, 0, $source_w, $source_h); 

header('Content-Type: image/png'); 
imagepng($image); 

그냥 변환하는 것 그것의 16 색깔에 선택하거나 무언가 (나는 아주 확실하지 않다).

무엇이 잘못되었거나 잘못 되었습니까?

편집 : 내 imagepalettecopy() 전화가 거꾸로되었지만 수정해도 도움이되지 않습니다. 아래의 코멘트를 참조하십시오.

답변

1

변경하는 중 변경
imagepalettecopy ($ palette, $ image);

imagepalettecopy ($ image, $ palette);
작품을 원하십니까?

는 편집 : 나는 이러한 색상은 당신과 다른 생각

enter image description here

:

은 내가 GIF로 다음 팔레트를 시도했다. 이 (정말로 여기 차이) 내가 시도하는 코드입니다

(I 손 ... 사진에서 그린을 포착) :

<?php 

$palette = imagecreatefromgif('palette-gif-03.gif'); 

$source = imagecreatefromjpeg('test-image-01.jpg'); 

$source_w = imagesx($source); 
$source_h = imagesy($source); 

$image = imagecreate($source_w, $source_h); 

imagepalettecopy($image, $palette); 

imagecopy($image, $source, 0, 0, 0, 0, $source_w, $source_h); 

header('Content-Type: image/png'); 
imagepng($image); 

imagedestroy($imgage); 
imagedestroy($palette); 
imagedestroy($source); 
?> 

그리고 이것은 내 결과였다 :

enter image description here

사진을 삭제해야하는지 알려주세요. !!

+0

답장을 보내 주셔서 감사합니다. 아니, 원래의 많은 색상 팔레트를 유지합니다. 위의 코드는 이미지를 변경하고 색상 수를 현저하게 줄이지 만 16 가지 색상으로 줄이는 것으로 보입니다 (내 경우에는 파란색과 회색이 많음). – Viper007Bond

+1

설명서에 imagepalettecopy (resource $ destination, resource $ source)가 있기 때문에 이상합니다. 모범적 인 소스 이미지와 결과 이미지를 질문에 추가 할 수 있습니까? – John

+0

죄송합니다, 이전의 코멘트가 잘못되었습니다. 내 코드에서 버그. 그러나 두 주문 (실수로 잘못된 주문과 올바른 주문)은 비슷하지만 잘못된 이미지가됩니다. 테스트 이미지 : http://www.viper007bond.com/wordpress/wp-content/uploads/2013/05/20130511-110556.jpg 올바른 순서 (이미지, 팔레트) : http://pic.armedcats.net/b/ bl/blue/2013/05/15/imagepalette.png 원본 역순 (팔레트, 이미지) : http://pic.armedcats.net/b/bl/blue/2013/05/15/paletteimage.png – Viper007Bond