2012-03-30 2 views
3

PHP의 cairo 확장자를 가진 PNG 파일을 생성 중입니다. 이미지에 배경과 텍스트가 들어 있습니다. 이제 카이로가 생성 한 이미지를 PHP로 압축하려고합니다. 이 작업을 수행 할 라이브러리가 있습니까?PHP에서 PNG 파일 압축

찾았습니다 pngcrush 도구입니다. 그러나 그것의 명령 줄 도구. 나는 system 호출을하고 싶지 않다. PHP 솔루션이 없다면 C 솔루션이 할 것입니다. 이 경우 PHP 확장을 만들 것입니다.

나는 this related 질문을 읽었습니다. 그러나 거기에는 아무런 대답이 없습니다.

답변

1

를 사용할 수 있습니다. 페이지 하단에서 소스를 얻을 수 있으며 CLI 버전도 분리되어 있습니다.

문제는 소스가 C++이고 ANSI C가 아니라는 것입니다. PHP 확장을 만들지 않았기 때문에 차이점이 있는지 알 수 없습니다.

0

C 코드의 경우 ImageMagick을 살펴보십시오. PHP 확장 프로그램도있는 것 같습니다.

+0

읽기 http://stackoverflow.com/questions/7462827/phpimagick-png-compression 그런 식으로 작동하지 않습니다. –

+0

아하! ImageMagick 문제가 아닌 PHP 문제인 것 같습니다. 플래그를 PHP-ImageMagick 확장에 추가하거나 직접 만들 수도 있습니다. [MagickCore] (http://www.imagemagick.org/script/magick-core.php)에는 코드에서 gif를 png로 변환하는 예제 ('예제'검색)가 있습니다. – RunHolt

+0

관련 질문이있는 경우 OP가 PHP로 시도했지만 명령 줄에서도 시도했습니다. 두 경우 모두 10 % 이상의 압축을 달성하지 못합니다. –

1

당신은 내가 PngOptimizer에서 살펴 것 imagepng() ...

//If you don't already have a handle to the image and it's just on the file system... 
$im = imagecreatefrompng("yourGenerateFile.png"); 
$quality = 5; //0 - 9 (0= no compression, 9 = high compression) 
imagepng($im, 'file/to/save.png', $quality); //leave out filename if you want it to output to the buffer 
imagedestroy($im); 
+0

나는 이미 카이로 핸들을 가지고 있지만 gd 핸들은 가지고 있지 않다. 나는 당신의 코드를 시험해보고 알려줄 것이다. –

+0

품질이 유지되지 않습니다. 투명성이 완전히 사라졌습니다! –

+0

투명도 사용 :'imageAlphaBlending ($ im, true); imageSaveAlpha ($ im, true); ' like here : http://php.net/manual/en/function.imagecreatefrompng.php#43024 –