当前位置:首页 > PHP > 正文内容

使用php将svg图片转换为png图片

高老师3年前 (2024-01-11)PHP446
(1)、安装composer包
composer require meyfa/php-sv
(2)、包装下方法
/**
 * SVG图片转PNG图片
 * @param $svgFilePath 
 * @param $pngFilePath
 * @param $width
 * @param $height
 * @return void
 * @throws BusinessException
 */
function svgToPng($svgFilePath, $pngFilePath, $width = 200, $height = 200)
{
    // 检查文件
    if (!is_file($svgFilePath)) {
        throw new BusinessException('文件地址不存在');
    }

    // 加载文件
    $image = SVG::fromFile($svgFilePath);

    // 设置图片宽高
    $rasterImage = $image->toRasterImage($width, $height);

    // 保存文件
    imagepng($rasterImage, $pngFilePath);
(3)、调用测试
svgToPng('./1.svg','777.png')

(4)、质量最高的方式是下面的方式

// 创建 Imagick 实例
$imagick = new Imagick();
// 读取 SVG 文件
$imagick->readImage('input.svg');
// 设置图像分辨率(DPI)以提高输出质量
$imagick->setResolution(300, 300);
// 将图像格式转换为 PNG
$imagick->setImageFormat('png');
// 保存为 PNG 文件
$imagick->writeImage('output.png');
// 释放资源
$imagick->clear();
$imagick->destroy();

安装扩展只需要将php dll放在ext 其他的dll扔在php目录就行





扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/699.html

分享给朋友:

“使用php将svg图片转换为png图片” 的相关文章

PHP中$this和self的区别

PHP中$this和self的区别

<?php //对比$this和self   /*  * $this更倾向于对象本身  *   */   class  Par{     public   ...

php调用 java webservice接口

php调用 java webservice接口

php调用Webservice基本语法如下:$url ='xxxxxxx.cn'  //链接服务器端 $client = new SoapClient($url);通过以上语法已经连接到webservice,也可将wsdl在本地使用,...

【一】PHP多进程学习-简单创建父子进程.理解父子进程运行流程

【一】PHP多进程学习-简单创建父子进程.理解父子进程运行流程

(1).学习的目标:学会创建父子进程,并且能够区分当前进程是父还是子;了解父进程执行过程,子进程执行过程;能够用多进程执行任务(2).相关函数学习:    (2.1)pcntl_fork()执行时:       &nbs...

php位运算符详解

php位运算符详解

文章篇幅较长,如果不喜欢看文章的,此处抛出韩顺丰老师的位运算视频,韩老师应该是全网讲php位运算符最详细的一个老师了。链接:https://pan.baidu.com/s/14xj7er8eVSUcJ-jYXyA0GA  提取码:731m 链接:https://pan.baidu.com...

php curl Received HTTP code 403 from proxy after CONNECT

php curl Received HTTP code 403 from proxy after CONNECT

在调用微信code换openid的接口curl报错curl Received HTTP code 403 from proxy after CONNECT,错误码56。可以看到是curl的代理有问题。然后我自己电脑设置代理去访问curl请求的地址,的确也返回了403,说明代理不允许访问这个地址,联系...

EasyTask使用redis队列教程

EasyTask使用redis队列教程

场景:模拟验证码发送。仅做代码演示。(1).创建一个验证码发送接口sendCaptcha/**  * 发送验证码  */ public function sendCaptcha() {     //外部参数(获...