【发布时间】:2010-11-09 10:44:17
【问题描述】:
我未能将以下 PHP/ImageMagick 代码翻译成 Ruby RMagick(以使其对未来的用户更易于管理并了解它的实际作用):
$output = array();
$returnValue = 0;
$pngFiles = $myDir->find("/.png$/i");
foreach($pngFiles as $pngFile) {
$cmd = 'convert '.$pngFile->path.' -resize 1x1 -alpha on -channel o -format "%[fx:u.a]" info:'
exec($cmd, $output, $returnValue);
if($output[0] != 1) {
logMessage("PNG file contains some alpha transparency and will not be modified");
}
}
By now 我以为我或多或少地理解了 convert-command 的作用,但是将它翻译成 RMagick 让我重新思考。
例如:为什么$output[0] != 1 有时 true 在$myDir 的PNG 上,而RMagick 的Image.alpha? 在@ 的PNG 上总是 true 987654330@?我错过了什么吗?
我认为让我回到正轨的最好方法是,如果有人可以向我解释 convert-command 到底在做什么(包括表达式 %[fx:u.a])。
更新:与此同时,我已经编写了我需要此信息的脚本。如果对你有帮助,可以check it out at Github。
【问题讨论】:
-
我认为 - Image.alpha 可能正在检查图像是否具有 alpha 层,PNG 就是这样做的。而这是检查单个像素的透明度级别。请参阅下面的答案。
标签: php ruby imagemagick rmagick