我正在尝试将矢量图像格式.emf,.wmf转换为高分辨率清晰锐利的光栅图像.gif,jpg。 (通常这可以在Illustrator中轻松完成)。但我无法在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 :(得分: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,因为它支持透明度。