php结合imagick 修改图片的DPI,达到与ps类似的效果

使用php修改图片的DPI,达到与ps类似的效果

安装好imagick扩展

  1. 进入扩展官网http://pecl.php.net/package/imagick,对应下载好imagick插件,配置到php中
  2. 配置扩展到php中,windows文章教程https://www.php.net/manual/zh/install.pecl.windows.php
  3. liunx教程,看这个https://www.php.net/manual/zh/install.pecl.pear.php

安装好Image Magick软件

  1. linux下载地址:https://imagemagick.org/archive/binaries/magick
  2. windows下载地址:https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-11-Q16-HDRI-x64-dll.exe
  3. 配置好环境变量,方便其他程序进行调用

PHP使用imagick进行分辨率调整demo

  1. 这里说的分辨率是dpi,一般网路图片dpi为72或者96,不适合打印,适合打印的图片分辨率一般都是254,300,600等,主要看打印的机器,在ps中,我们可以方便的调整,而且能保持一定的图片质量,我们使用imagick也能达到和ps一样额效果
  2. 示例代码如下
$start = microtime(true);
$dpi = 300;
$im = new Imagick();
$res = $im->readImage('test.png');
// 1. 设置好调整的单位
$im->setImageUnits(imagick::RESOLUTION_PIXELSPERINCH);
// 简单放大,不可取
//$im->scaleImage(3867, 0, false);
// 2. 将图片重新采样到所需的分辨率,图片会自动放大到对应dpi大小,同时设置图片dpi(效果同ps)
$im->resampleImage($dpi, $dpi, imagick::FILTER_UNDEFINED, 0);
echo "use time " . (microtime(true) - $start).PHP_EOL;
// 很多教程写了这个,这个单独用确实可以修改分辨率,但是图片质量达不到要求,也不会放大图片
// $im->setImageResolution($dpi, $dpi);
$im->writeImage('test300_4.png');
echo "use time " . (microtime(true) - $start);

总结

线上很多教程,感觉都没有讲清楚这个问题,特别记录下来,仅供参考。
软件版本:

windows
php 7.4.3 x64 nts
imagick.dll 3.7.0
ImageMagick-7.1.1-11-Q16-HDRI-x64-dll
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

a敏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值