首页 > 解决方案 > 用于查找和调整具有

问题描述

我正在尝试创建一个可以设置并忘记的shell文件...

分辨率高于 1920 像素的图像会调整大小。在我看来,对于 2018 年的电子商务商店来说,高于 1920 似乎太高了……在 8K+ 图像上,Chrome bv 中的 iPhone 简直崩溃了……

我已经在尽可能多的地方替换了脚本,以便显示前端适当的分辨率,因此不会简单地调整原始文件的大小。Ex 4000 x 6720 原版,现在是 500 x 1000,显示为 250 x 500(因此它在视网膜上仍然清晰)。然后这些将在 Magento 缓存中以较低的分辨率出现,然后在清漆缓存中。

现在的想法是创建一个 shell 脚本来清理这些“太大”的文件,并自行调整大小:

find /home/customer/customer.com \
  -type f \
  -regex "^. * \. \ (png \ | jpg \ | jpeg \) $" \
  -exec identify -format "% d,% w /% f,% h \ n "{} \; \
  | awk -F ',' '$ 2> 1080 && $ 3> 1920' \
  | grep "png \ | jpg \ | jpeg"

给我:

/home/sample/sample.com/media/catalog_fm/1453138191_LIU.JO_Dames_kleed_P16049T1633_nero_2_x15148601020101.jpg, 1440, 2160
/home/sample/sample.com/media/catalog_fm/1446052276_LIU.JO JEANS_Dames_vest_W65221E0139_22222_2_x14864501010101.jpg, 1440, 2160
/home/sample/sample.com/media/catalog_fm/1446655568_LIU-JO ACCESOIRES_Dames_shoes & boots_S65019P0055_22222_4_x14874601010101.jpg, 1440, 2160
...

现在的目的是按如下方式调整它的大小:

convert FILENAME -verbose -resize x1920 FILENAME

我想在一个 shell 文件中完成所有这些单独的步骤。现在我复制生成的文件 > .txt 并提取它,手动运行带有复制粘贴数据的脚本。

标签: linuxshellawk

解决方案


我认为您的方法不是最好的,您可以告诉 convert 仅在图像较大时才调整图像大小,IIRC:

convert -resize ${MAXWIDTH}x${MAXHEIGHT}\>  ${FILENAME}

所以你可以找到所有的图片并释放它们:

find . -type f \( -name "*.png" -or -name "*.jpg" -or -name "*.jpeg"\) -exec convert -resize ${MAXWIDTH}x${MAXHEIGHT}\> {} \;

推荐阅读