ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: zl1st

[已解决] 求一段能获取文件夹内图片特定属性的代码

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-5-27 12:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
读取exif,VBA and PowerShell
参考:https://www.devhut.net/get-image ... vba-and-powershell/



222.png
333.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-5-27 12:55 | 显示全部楼层
wanghan519 发表于 2022-5-27 09:05
好像有图层的会多转出几个bmp,所以还是加上layers参数,再在两次转换后加上一句删除tmp bmp试试吧

正在接近真相,换了个参数Get-ChildItem -Recurse *.tif | % {if ((identify -format '%C' $_.FullName) -ne 'NONE') {convert  +compress -composite  $_.FullName tmp.bmp; convert tmp.bmp $_.FullName}}  用-composite代替了-layers,但出现了附图错误,重复执行,错误行减少,多错重复执行,最终达到了我想唠叨的结果。可能是有些不用转的图像的原因,您看看还有没有可优化的。
1.jpg

TA的精华主题

TA的得分主题

发表于 2022-5-27 14:48 来自手机 | 显示全部楼层
本帖最后由 wanghan519 于 2022-5-27 14:52 编辑
zl1st 发表于 2022-5-27 12:55
正在接近真相,换了个参数Get-ChildItem -Recurse *.tif | % {if ((identify -format '%C' $_.FullName)  ...


35楼,两次convert后面有个删除tmp.bmp的过程,别忽略掉啊

35楼的代码真的不行吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-5-27 15:13 | 显示全部楼层
wanghan519 发表于 2022-5-27 14:48
35楼,两次convert后面有个删除tmp.bmp的过程,别忽略掉啊

35楼的代码真的不行吗?

35代码不可以,我用convert命令行转换测试,有图层的图片用-layers会形成多个BMP,35楼代码可能是把多个BMP都转一遍,最后保留下的是编号最大的图层,这个图不能用。我觉得用-composite是先把所有图层合并一下,再转成一张BMP.然后再转成TIF,这样的图能用。但有错误提示,代码我看不懂。

TA的精华主题

TA的得分主题

发表于 2022-5-27 15:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 wanghan519 于 2022-5-27 15:47 编辑

通过一下好友吧
composite真的不对,你试着对一个文件进行composite,那种写法会出错的,-layers merge不会产生多个bmp,除非没写全,加个好友吧,这样半天一个帖真让人着急啊

真的,35楼的代码复制粘贴一下试试吧,composite是把上一张tmp合成到下一张图片上,不是对本图片合并图层,幸亏参数不全所以只是报错没太大影响,加好友啊,加QQ啊,这么说太让人着急了

TA的精华主题

TA的得分主题

发表于 2022-5-27 15:54 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
zl1st 发表于 2022-5-27 15:13
35代码不可以,我用convert命令行转换测试,有图层的图片用-layers会形成多个BMP,35楼代码可能是把多个BMP ...

加好友啊,大哥,球球啦,简直逼死强迫症啊

TA的精华主题

TA的得分主题

发表于 2022-5-27 18:46 | 显示全部楼层
记录一下,原来合并图层后会多一个alpha通道,删掉才行。
  1. Get-ChildItem -Recurse *.tif | % {if ((identify -format '%C' $_.FullName) -ne 'NONE') {convert +compress -layers merge $_.FullName tmp.psd; convert -alpha remove tmp.psd $_.FullName; Remove-Item tmp.psd}}
复制代码

TA的精华主题

TA的得分主题

发表于 2022-5-27 20:10 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-6-3 16:56 | 显示全部楼层
在坛友无私指导下,终于组合出一段适合自己的代码,放到论坛留存。略作注释,方便有共同样需求的坛友理解。
Get-ChildItem -Recurse *.tif* | % {if (((identify -quiet -format '%A' $_.FullName)  -notlike  "undefined*") -or ((identify -quiet -format '%C' $_.FullName)  -notlike  "none*")) {mogrify -quiet +compress -coalesce -alpha remove $_.FullName}}
注释:Get-ChildItem -Recurse   powershell命令等同于dir /s,也可用LS -Recurse替代
identify -quiet -format '%A' $_.FullName)  -notlike  "undefined*"
identify ImageMagick的查看 -quiet 容错 -format '%A'查找alpha通道 返回值包括Undefined , Blend, Copy, or Update.
identify -quiet -format '%C' $_.FullName)  -notlike  "none*" 查找压缩格式图片
mogrify -quiet +compress -coalesce -alpha remove $_.FullName  原位转换 去除压缩、合并图层、删除透明通道

TA的精华主题

TA的得分主题

发表于 2022-6-28 09:57 来自手机 | 显示全部楼层
今天逛微信朋友圈看到1个小程序,可以读取好多好多属性
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-18 03:25 , Processed in 0.040475 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表