繁体   English   中英

转换SVG成PNG图像

[英]Convert SVG to PNG image

我试图将svg转换为png图像。 我用下面的PHP代码。

$image = new Imagick();
$image->readImageBlob(file_get_contents('image.svg'));
$image->setImageFormat("png24");
$image->resizeImage(1024, 768, imagick::FILTER_LANCZOS, 1); 
$image->writeImage('image.png');

发现以下错误

Fatal error: Uncaught exception 'ImagickException' with message 'WriteBlob Failed `image.png' @ error/png.c/MagickPNGErrorHandler/1645' in /var/www/html/image.php:8 Stack trace: #0 /var/www/html/image.php(8): Imagick->writeimage('image.png') #1 {main} thrown in /var/www/html/image.php on line 8

我究竟做错了什么?

可能的解决方案:

检查路径是否正确,以及“ image.png”是否具有文件写入权限

看到这个问题

使用writeImageFile代替writeImage

看到这篇文章

因此,我问您img是否已经存在或正在上载它们,您说它们已经存在,但是我们将按照您上载img的想法​​进行工作,然后进行转换。

首先,就像往常一样上传图像的表单:

<form action="test.php" method="post">
    <input type="file" name="img">
    <input type="submit" name="submit">
</form> 

第二,创建2个文件夹,一个用于主图像,第二个用于转换后的图像。

  • 第一个文件夹名称为“原始”
  • 第二个文件夹名称为“转换”

现在,在与html页面相同的文件夹中创建一个名为test.php的页面。

在这里,我们将获取原始图像并将其上传到第一个文件夹,然后将其调回并转换并将新图像存储在第二个文件夹中。

<?php

    if(isset($_POST['submit']))
    {

        $filename = $_FILES['file']['name']; // getting the name of the uploaded img 
        $file_loc = $_FILES['file']['tmp_name'];

        $folder1="original/"; 
        $folder2="converted/";

        if(move_uploaded_file($file_loc,$folder1.$filename)) // moving the uploaded or the original img to the folder 1 
            {
                rename($folder1.$filename,$folder1.$filename.".SVG"); // adding SVG ext to the file name 
                $newext =  substr($filename,0, -3);  // taking the .SVG string from the file name 
                imagepng(imagecreatefromstring(file_get_contents($folder1.$filename)),$folder2.$newext."png"); // Bring the file from folder 1 and add .png to its file name and then moving it to folder 2

            }
        else
        {
            echo "Something wrong with moving the file ";
        }
    else
    {
        echo "submit did not done ";
    }
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM