ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-5-26 22:36 | 显示全部楼层
哈哈,实现读取exif
6WttQylvBS.gif

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-5-27 07:27 | 显示全部楼层
wanghan519 发表于 2022-5-25 13:26
我这转完用PS打开另存不会选中图层(问下PS用的哪个版本我想试试),上网搜了一下,确实有说imagemagick ...

我试着用Get-ChildItem -Recurse *.tif | % {if ((identify -format '%C' $_) -ne 'NONE') {convert $_ tmp.bmp; convert  tmp.bmp $_}},转成BMP再转回来,部分能转成功,能通过我那个挑剔的软件。问题是有的转、有的不转,同样的文件当前目录转,子目录可能就不转。还有就是能转的几个最后都变成一个了。请看看命令行是不是写的不对。

TA的精华主题

TA的得分主题

发表于 2022-5-27 07:32 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
$_改成$_.FullName吧,这样是完整路径,原来那样写确实不妥

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-5-27 08:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
wanghan519 发表于 2022-5-27 07:32
$_改成$_.FullName吧,这样是完整路径,原来那样写确实不妥

还是有点问题,转换能过,转换成的TIF能用。接近成功了。
但还是转换后的TIF都是同一个图像,查看中间过程转出的BMP文件是正确的。
测试图发给您,您有时间再试一下。

2.rar

528.56 KB, 下载次数: 8

TA的精华主题

TA的得分主题

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

  1. Get-ChildItem -Recurse *.tif | % {if ((identify -format '%C' $_.FullName) -ne 'NONE') {convert +compress -layers merge $_.FullName tmp.bmp; convert tmp.bmp $_.FullName; Remove-Item tmp.bmp}}
复制代码



TA的精华主题

TA的得分主题

发表于 2022-5-27 09:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我觉得你走入了一个歧途,你只是要判断tif是否压缩而已,没必要弄那么复杂。刚才特意了解了一下tif格式,你只要读文件tag进行判断就可以了。安装一堆插件不如自己学几十分钟,还能提高一些基础。我并没有写完整代码,自己学习一下吧。帮忙的都肯花时间学习无关的图片格式了,正主也应该学一下吧
微信图片_20220512112329.png

TA的精华主题

TA的得分主题

发表于 2022-5-27 09:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
注意:上面代码中的偏移量需要从文件头提取,然后再查找压缩标签。

TA的精华主题

TA的得分主题

发表于 2022-5-27 11:04 | 显示全部楼层
抛砖引玉,自定义函数IsLZW,返回值True或False或为空
image.png

TA的精华主题

TA的得分主题

发表于 2022-5-27 11:05 | 显示全部楼层
IsLZW代码及用法如下:
  1. Sub testIsLZW()

  2. Debug.Print IsLZW("C:\Temp\IsLZW\43.tif")
  3. Debug.Print IsLZW("C:\Temp\IsLZW\44.tif")
  4. Debug.Print IsLZW("C:\Temp\IsLZW\999.tif") 'Test

  5. End Sub

  6. Function IsLZW(sImage As String)
  7.     On Error GoTo err
  8.     If Not Dir(sImage, vbDirectory) = "" Then
  9.         Dim oIF As Object, oP As Object
  10.         Set oIF = CreateObject("WIA.ImageFile")
  11.         oIF.LoadFile sImage
  12.         Set oP = oIF.Properties 'Item 5 - Name:Compression
  13.         If oP(5).Value = 5 Then 'LZW
  14.             IsLZW = True
  15.         ElseIf oP(5).Value = 1 Then 'Uncompressed
  16.             IsLZW = False
  17.         End If
  18.     End If
  19. err:
  20. End Function
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-5-27 12:51 | 显示全部楼层
tspliu 发表于 2022-5-27 09:29
我觉得你走入了一个歧途,你只是要判断tif是否压缩而已,没必要弄那么复杂。刚才特意了解了一下tif格式,你 ...

谢谢,已用 perfect131提供的wia代码解决了,您讲的这些我有时间再深入学习。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-9-30 00:24 , Processed in 0.037973 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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