【问题标题】:Change in dpi using imagick library in php在 php 中使用 imagick 库更改 dpi
【发布时间】:2012-01-12 07:37:27
【问题描述】:

我们正在使用 php 中的 imagick 库使用 annotateimage 函数添加一些文本。源文件是 300 dpi,但编辑后,输出文件变为 96 dpi。

我们该如何解决?

EDIT******************************

当我们在本地开发服务器中尝试此操作时,输出文件也以 300 dpi 显示。仅当我们在 Web 服务器中进行测试时才会出现此问题。都是linux,Imagick版本也一样。

【问题讨论】:

标签: php imagemagick dpi


【解决方案1】:

您可以为此使用 setResolution,作为 -density 命令行开关的等效项。

http://php.net/manual/en/function.imagick-setresolution.php

编辑:

您必须在读取图像之前设置它才能工作。

$im = new Imagick(); 
$im->setResolution(300,300); 
$im->readImage("image.jpg");

【讨论】:

  • 我们尝试使用这个函数 (setResolution(300,300)) 但是输出没有变化...
  • 感谢您的评论。但是我们不能在没有任何参数的情况下调用 Imagick() 构造函数。我们正在阅读的源文件只有 300 dpi。我们编辑后它变成了 96 dpi....
【解决方案2】:

首先用 Imagick 试试这个

$image = new Imagick();
$image->setImageUnits(imagick::RESOLUTION_PIXELSPERINCH);
$image->setImageResolution(300,300);

如果上述方法不起作用,试试这个。

您可以读取文件并将图像的 DPI 从 96 转换为 300。试试这个。

  $imageGet = file_get_contents($imagePath);
  if($imageGet){
     $imageConverted = substr_replace($imageGet, pack("cnn", 1, 300, 300), 13, 5);
     $savefile = file_put_contents($newimagePath, $imageConverted);
  }

【讨论】:

    猜你喜欢
    • 2011-04-23
    • 2011-05-03
    • 1970-01-01
    • 2013-07-09
    • 1970-01-01
    • 2016-01-22
    • 2012-05-15
    • 1970-01-01
    • 2013-01-02
    相关资源
    最近更新 更多