当前位置: 首页 > 知识库问答 >
问题:

php shell_exec不能使用imagemagick命令

晁开宇
2023-03-14

我尝试将rgb颜色转换为透明

当我在命令行中使用这段代码时,它工作得非常好。

convert -transparent 'RGB(249,249,255)' /home/me/web/my.png /home/me/web/mynew.png

但当我将其与php一起使用时:

<?php

error_reporting(E_ALL);
ini_set('display_errors', '1');

$output = shell_exec("convert -transparent 'RGB(249,249,255)' /home/me/web/my.png /home/me/web/mynew.png");

?>

我得到一个错误:

转换:无法打开映像“/home/me/web/mynew”。png':@错误/blob。c/OpenBlob/2498。

有人有主意吗?

共有2个答案

齐晟
2023-03-14

在我看来,这似乎是一个访问权问题。您的web服务器尝试在主目录中写入文件。

通常,您的主目录受到保护,除了您自己之外,没有人可以在其中写入文件。因此,当您使用终端时,您的网络服务器无法创建新文件

检查包含新映像的文件夹的访问权限,并允许运行Web服务器的用户写入该文件夹。

仇浩旷
2023-03-14

你必须使用相对路径到你的主目录(因为shell_exec),否则你必须使用绝对路径。

但是为什么不使用imagemagick for php呢?

 类似资料:
  • 我必须使用Fred的ImageMagick脚本创建图像的过渡序列,特别是fx过渡。 在我的PHP代码中,我将所有的图片调整为标准大小,然后我将所有这些图片重命名为pic000001.jpg,pic000002.jpg,pic000003.jpg等(我用$Count计数),那么我做: (这肯定是脚本生成的消息),然后是如下消息: 因为图片没有生成(它揭示了对帧编号的高维是正确的,所以不要专注于此)。

  • 我在windows服务器上安装了imagemagick,当我尝试使用CMD时,它成功地转换了文件,但当我在php中使用以下代码时:- 它给出了以下错误:- ImagickException:无法打开图像“弧”。pdf“:没有此类文件或目录@错误/blob。c:\wamp\www\test\test中的c/OpenBlob/2638。php第10行 我也试过了 然后给出:- ImagickExcep

  • imagemagick转换命令有问题。该命令与标准结构的normal.svg配合使用非常理想。 但是如果您使用 区域和 引用,它就不起作用了。 magick convert test.svg-调整50%test.png的大小 > 适用于SVG1 在带有xlink:href的SVG2上不起作用 <?xml version=“1.0”encoding=“UTF-8”?> <!doctype svg P

  • 我是ImageMagick新手,我只是尝试在命令行中运行convert命令,如下所示: 获取错误消息: 转换:无法打开图像/主页/674390/桌面/罗斯。jpg“:没有这样的文件或目录@错误/blob。c/OpenBlob/2643。转换:此图像格式没有解码委托/home/674390/Desktop/rose。jpg“@错误/构成。c/ReadImage/555。转换:未定义图像“/主页/67

  • 在linux上执行以下convert命令时,字体出现委托错误。 转换:委托库支持不内置'/usr/share/fonts/type1/gsfonts/n021003l.pfb'(Freetype)@警告/注释. c/RenderFreetype/1818。转换:没有此图像格式的解码委托PNG错误/成分. c/ReadImage/509。转换:委托库支持不内置'/usr/share/fonts/ty

  • 问题内容: 我正在Node.js(+ express 4)上开发一个Web应用程序,用户可以通过将其上载到服务器来设置其个人资料图像。我们已经限制了文件的模仿类型和最大文件大小,因此用户上传的png或jpeg图片不能超过200KB。 问题是我们想将上传的图片分辨率(服务器端)调整为200x200,以改善页面加载并节省磁盘空间。经过研究,所有答案都指向使用任何基于ImageMagick或Graphi