2014-05-13 2 views
0

벡터 이미지 형식 .emf, .wmf를 고해상도 선명하고 선명한 래스터 이미지 .gif, jpg로 변환하려고합니다. (대개 Illustrator에서 쉽게 수행 할 수 있습니다.) 그러나 나는 PHP에서 이것을 할 수 없다. 다음 코드를 시도하지만 결과가 흐리거나 왜곡되거나 완전히 검정입니다.벡터를 래스터에서 PHP로 변환

<?php 

$image = new Imagick("1.emf"); 

$image->resizeImage(1500,0,Imagick::FILTER_LANCZOS,1); 

$image->setImageFormat('gif'); 

$image->setresolution(900, 900); 

$image->writeImage("2.gif"); 

?> 
+0

PNG를 고려하십시오. JPEG는 사진 용이며 GIF는 8 비트 팔레트로 제한되며 1 비트 알파 만 지원합니다. – Brad

+0

예, 저는이 두 가지를 모두 시도했습니다. 동일한 결과를 제공합니다. gif는 다른 두 개보다 훨씬 낫습니다. 날카로운 것을 찾고, Illustrator에서 jpg 기능으로 내보낼 수 있습니다. –

+2

PNG가 최고의 품질을 제공 할 것이라고 확신 할 수 있습니다. 그렇지 않으면 다른 곳에서 뭔가 잘못하고있는 것입니다. PNG는 무손실입니다. – Brad

답변

1

이미지를로드하기 전에 해상도를 설정하기 만하면됩니다.

$image = new Imagick(); 

$image->setresolution(300, 300); 

$image->readimage($filename); 

$image->resizeImage(1500,0,Imagick::FILTER_LANCZOS,1); 

$image->setImageFormat('jpg'); 

$image->writeImage("1.jpg"); 

이 코드는 벡터를 선명하고 또렷한 래스터 이미지로 변환합니다. 모든 벡터 형식 (svg, ai, emf, wmf 등)에서 작동합니다. jpg 결과가 예기치 않게 검정색 이미지 인 경우 이미지 투명도를 흰색 (check this link)으로 변경해야합니다. 투명도 문제를 해결하기위한 또 다른 방법은 PHP를 5.5로 업데이트하고 해당 버전에 Imagick을 설치하는 것입니다. 이렇게하면 투명 이미지에 문제가 발생하지 않으며 위의 코드는 정상적으로 작동합니다.

투명도를 지원하므로 jpg를 png로 변경할 수 있습니다.