使用imagemagick R输出图像的白色内容百分比

时间:2017-06-19 07:08:54

标签: r imagemagick

我正在渲染同一网页的两个版本,并且想知道最有效的空间使用。我的目标是通过将页面输出为图像并查看白色页面的百分比来实现此目的。白色越少,效率越高(我的标准!)

如何使用R中的imagemagick输出图像的%white内容?我看到它可以通过命令行,但在R内部无法找到任何内容。

3 个答案:

答案 0 :(得分:2)

如果你想要完全白色(不是光线或其他东西),你可以这样做:

download.file("https://www.gravatar.com/avatar/b1cdf616876083f7c5ec1a49fc357530?s=328&d=identicon&r=PG", tf <- tempfile(fileext = ".png"), mode="wb")
f <- function(fn) {
  require(magick)
  img <- image_read(tf)
  r <- as.raster(img)
  sum(substr(tolower(r), 1, 7) == "#ffffff") / length(r) * 100
}
f(tf)
# [1] 44.33931

答案 1 :(得分:2)

很抱歉,我无法帮助您处理R方面的事情,但您可以调整的命令行命令如下:

convert image.png -fill black +opaque white -format "%[fx:mean*100]" info:

用黑色(-fill black)替换非白色的所有内容(+opaque white),然后计算结果的白色百分比。

<强>实施例

convert -size 100x10 xc:white -bordercolor red -border 50 a.png          # Generate test image
convert a.png -fill black +opaque white -format "%[fx:mean*100]" info:   # Determine whites
4.5454

enter image description here

convert -size 100x10 xc:white -bordercolor blue -border 10 a.png         # Generate test image
convert a.png -fill black +opaque white -format "%[fx:mean*100]" info:   # Determine whites
27.7778

enter image description here

答案 2 :(得分:1)

在ImageMagick命令行中,Mark的第二行无需知道其他颜色即可运行。所以它适用于没有第一行代码的两个图像。

convert VQZ9Y.png -fill black +opaque white -format "%[fx:100*mean]\%\n" info:
4.54545%

convert Qpdg8.png -fill black +opaque white -format "%[fx:100*mean]\%\n" info:
27.7778%