PHP:使用imagick改变图像的DPI?

时间:2016-04-10 22:59:51

标签: php

我正在试图弄清楚如何使用PHP和imagic来增加图像DPI。

但是,每次我使用以下代码时,我的页面都会返回500错误!

这是代码:

$im = new Imagick();
$im->setImageUnits(imagick::RESOLUTION_PIXELSPERINCH);
$im->setImageResolution(300,300);
$im->readImage("test.png");
$im->setImageFormat("png");
header("Content-Type: image/png");
echo $im;

我知道图像魔法已安装,因为我正在使用VPS而且我也试过这个代码可以正常工作:

<?php
exec("/usr/bin/convert bb9yuui70.png -bordercolor black -border 10x10 bb9yuui70.png");
?>
<img src="bb9yuui70.png">

我有什么遗失的东西吗?我对imagic世界很陌生。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:4)

500服务器错误→查看网络服务器错误日志 1 ,您会看到:

  

致命错误:Class&#39; Imagick&#39;找不到

  

致命错误:未捕获的异常&#39; ImagickException&#39;有消息&#39;无法处理空的Imagick对象&#39; ...

如果您看到第一个错误,则必须安装Imagick php模块(仅安装imagemagick是不够的。)

但是,安装了Imagick后,您的代码也会失败,因为您第一个来加载图片,然后来设置单位,分辨率等。 ..

$im = new Imagick();
$im->readImage("test.png");                                   # <--------
$im->setImageUnits(imagick::RESOLUTION_PIXELSPERINCH);
$im->setImageResolution(300,300);
$im->setImageFormat("png");
header("Content-Type: image/png");
echo $im;

1 实际上,在不查看网络服务器日志文件的情况下也可以显示以上两个错误:下次将ini_set( 'display_errors', 1 ); error_reporting( E_ALL );放在脚本的顶部,您将直接在您的脚本上看到大多数错误页面(然后,在生产时将其删除)。