【问题标题】:convert image 75 dpi to 300 dpi using Imagemagick PHP使用 Imagemagick PHP 将图像 75 dpi 转换为 300 dpi
【发布时间】:2019-05-10 13:20:39
【问题描述】:

我正在尝试将分辨率非常低的 jp2 图像增加到更高的 DPI,以便可以看到图像而不会对我们的眼睛造成任何不便。

我已成功读取 jpeg2000 编码字符串并将其显示为 PNG 文件。 (下面是代码)

$imagedata = "AAAADGpQICANCocKAAAAFGZ0eXBqcDIgAAAAAGpwMiAAAAAtanAyaAAAABZpaGRyAAAAyAAAAKAAAwcHAAAAAAAPY29scgEAAAAAABAAAAGXanAyY/9P/1EALwAAAAAAoAAAAMgAAAAAAAAAAAAAAKAAAADIAAAAAAAAAAAAAwcBAQcBAQcBAf9SAAwAAAABAQUEBAAA/1wAI0JvGG7qbupuvGcAZwBm4l9MX0xfZEgDSANIRU/ST9JPYf9kACIAAUNyZWF0ZWQgYnk6IEpKMjAwMCB2ZXJzaW9uIDQuMf+QAAoAAAAAAQMAAf9SAAwAAAABAQUEBAAA/5PPoKgT/dHUscn3uMJWDWKb153z8hPvSInB8QsdvHSg4pzoLevV6cHhwCOWrDWed1zB8RKHyC4PEhigx/MYuIx4wci8q/CEo2kiHBrV8DhszG7ymZ/UH7atm39cdbppgIDD4VYfCrB00E+GI+Qf3v1IHzVdC6k/pMRXolANASf+TQYCTKERfZoHB65rCU23EcMzjiQo+2MAmLli7aos4tyAgMOrw6tBVpk5rPA9rz1HB6Wn+siLUizMFl3TKpn7s1pJGcCba3pGnanMUNO8OP+EwaMdppACpwb6vbqSpeUbgICAgICAgID/2Q==";

$image=base64_decode($imagedata);

// Create Imagick object
$im = new Imagick();

// Convert image into Imagick
$im->readImageBlob($image);

//Set the output format
$im->setImageFormat("png");

header('Content-type: image/png');

echo $im;

我读到有可能使用 ImageMagick 增加 DPI。看这里http://www.imagemagick.org/discourse-server/viewtopic.php?t=18241

如何在我的 PHP 脚本中实现这一点(不是通过命令行)?非常感谢任何帮助和指导。

【问题讨论】:

  • 增加 DPI(这是一个可以修补的元数据)或增加像素大小?
  • 更改图像的 dpi 并不能改善它,它只是标题中的一个数字。如果您的图像是 2 像素 x 2 像素,则您有 4 像素。如果以 1 dpi 打印图像,它将是 2 英寸 x 2 英寸,如果以 100 dpi 打印,它将是 1/50 平方英寸,但无论哪种方式,它仍然只有四个块/色块.
  • 好的,我得到的图像是 160x200 像素,分辨率为 72DPI,肉眼看不清楚(有点脏)。我想改进它并带来更好的质量(比如我们在护照上的东西)..
  • 请出示图片。
  • 有些程序应该做你想做的事;从记忆中它开始于几年前的“真正的分形”。有一些基于它的程序,但在 Imagemagick 中不可用。

标签: imagemagick imagick imagemagick-convert jpeg2000


【解决方案1】:

如果您查看UK Government website for the Passport Office,它说护照照片需要至少 600px 宽 x 750px 高。

让我们从 600x750 的 Bean 先生的足够质量(如果不是内容)的照片开始:

如果我们现在将他的大小调整为与您的图像相同 (160x200),那么备份您会看到质量因尝试以 160x200 表示图像而受到影响,并且您无法发明所有丢失的像素 - 它们永远消失了。看看他的牙齿和眼睛里的亮点:

convert bean.jpg -resize 160x200 -resize 600x750 result.jpg

因此,您在 Imagick 中所能做的就是:

Imagick::resizeImage ( int $columns , int $rows , int $filter , float $blur [, bool $bestfit = FALSE [, bool $legacy = FALSE ]] )

返回到 600x750 并尝试将过滤器设置为 CatromLanczos。但是你不能发明不存在的东西......

【讨论】:

  • 嗨,马克,非常感谢您的详细解释。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多