在php中将矢量转换为栅格

时间:2014-05-13 16:08:57

标签: php vector imagick raster

我正在尝试将矢量图像格式.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");

?>

1 个答案:

答案 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,因为它支持透明度。