• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

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

武飞扬头像
a敏
帮助7

使用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

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfiafec
系列文章
更多 icon
同类精品
更多 icon
继续加载