使用PHP Imagick从SVG创建PNG时如何设置高度和宽度?

我正在尝试使用SVG动态生成PNG文件。

所以可以说我有一个SVG文件http://domain.tld/lib/img/svg/12345.svg,但我想调用http://domain.tld/png/12345/5000/,这将导致我的SVG文件的宽度为5000px的PNG图像。

我有两个问题:

  1. 调整大小不起作用,因为PNG首先会获得SVG的尺寸,然后再进行大规模升级,这会导致PNG看起来很难看。但是我不知道如何告诉脚本:“从SVG中以x / y尺寸创建PNG”?
  2. 目前,我需要创建一个临时的PNG文件,而不是完全动态创建的PNG文件。 (否则,我总是被告知图像包含错误。但是,如果我保存并再次加载它,它就可以工作。但是它很烂...)

这是我的代码:

    $file = 'lib/img/svg/12345.svg';
    $size = 5000;

    $temp = 'lib/img/png/temp/12345.png';

    $img = new Imagick();
    $img->setBackgroundColor(new ImagickPixel('transparent'));
    $svg = file_get_contents($file);
    $img->readImageBlob($svg);
    $img->setImageFormat('png24');
    $img->resizeImage($size,imagick::FILTER_LANCZOS,1);
    $img->writeImage($temp);
    $img->clear();

    $img = imagecreatefrompng($temp);

    header('Content-Type: image/png');
    imagealphablending($img,false);
    imagesavealpha($img,true);
    imagepng($img);
    imagedestroy($img);
h0712027 回答:使用PHP Imagick从SVG创建PNG时如何设置高度和宽度?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2813920.html

大家都在问