【发布时间】:2020-10-21 09:14:06
【问题描述】:
我的以下代码似乎正在生成损坏的图像。 Photoshop 显示“PNG 文件因 ASCII 转换而损坏”
$path_pngquant = "pngquant";
$status_code = null;
$image = null;
$output = null;
$image_input_escaped = escapeshellarg('test.png');
$command = "$path_pngquant --strip -- - < $image_input_escaped";
// Execute the command
exec($command, $output, $status_code);
if($status_code == 0)
{
//0 means success
$image = implode('', $output);
file_put_contents('test_2.png', $image);
}
【问题讨论】:
-
你怎么知道
$output是有效的图像数据?你甚至从不使用$image_input_escaped。更不用说您的$command似乎未定义。 -
抱歉,这是一个复制粘贴错误。我省略了运行命令的部分,命令运行并创建了一个无法打开的 40kb png。
-
小于号的用途是什么?这是
pngquant的哪个版本? -
我问是因为我刚刚使用 pngquant 进行了一些自动 png 压缩,并重复自动缩减。但与您的方法不同,我有一个控制台 php 脚本创建一个批处理(在 Windows 中为 *.bat 或 *.cmd ...)在连续重命名结果输出后执行该操作。没有看到小于登录的帮助文档。这是一个“linux”开关吗?
-