我试图从几千个jpeg文件中提取压缩属性。
的数据
我如何使用Excel Excel或PowerShell(或其他方法)来实现这一点?
一些用户没有使用正确的技术将tiff或png文件转换为jpeg。他们只是直接在资源管理器中编辑文件扩展名,而不是使用Photoshop等应用程序来正确更改文件格式。这会在下游过程中造成麻烦。
在检查了几个文件后,有问题的文件在该字段中显示为“未压缩”.
注意This answer没有提供我需要的解决方案,Compression属性不在该方法输出的308个属性列表中。
6条答案
按热度按时间lvjbypge1#
从我前面的评论-如果你的目标是真的识别 * 实际 * 文件类型(与依赖于文件扩展名)
字符串
jtw3ybtb2#
一个实用的解决方案是使用功能强大的ExifTool CLI,它可以安装在用户级别(不需要管理员凭据)。
下面是一个PowerShell解决方案,通过
winget.exe
实现无人值守的按需安装:字符串
daolsyd03#
为了您的目的,通过查找应该位于真正的经典JPEG文件(即0xffd8)开头的SOI标记,可能足以将包含其他类型图像格式的受损文件与JPEG区分开来。出现“JFIF”作为几个字节的文本也是JPEG的一个很好的指示(但不能保证). MS位图文件大多以“BM”开头开始,但也有其他possibilities。PNG以0x89504E47开头,其中包括字母PNG。ISTR GIF文件以“GIF”开头。最后TIFF将以“II”或“MM”开头开始.然后将文件扩展名设置回与文件内容一致,您应该可以开始了。这应该足够简单,打开文件读取第一个单词以检查文件数据中实际包含的内容(对于其他深奥的图像格式,可能需要额外的语法分析)。
你也可以尝试用棒球棒重新教育你的用户。
最简单的常用工具是保存每种格式的一个小图片到一个临时目录中,然后使用更多的图片来查看第一个块。显然,在MySQL中,你会打开文件进行二进制读取,并获得前两个字节。我不确定stackOverflow对高位字符集的React如何,所以这个示例输出可能不会像预期的那样表现。
字符串
我没想到你手头上没有一个十六进制编辑器,这是一个最小的JavaScript代码,可以检查和显示任何文件的前两个字节。
型
jfewjypa4#
您可以使用API
GetFileAttributes
获取。字符串
vaj7vani5#
在我看来,最简单的方法是通过WMIC,它是Windows原生的,可以通过CMD和Powershell使用。下面是命令及其输出的示例:
字符串
这个输出也可以被调整、总结或隔离,就像这样:
型
在wmic帮助中查看更多:)
型
编辑:当然,我会添加确切的值返回,因为你只需要寻找压缩状态:
型
回报率:
型
你可以在你的脚本中按照你喜欢的方式解析它。
wmtdaxz36#
下面是一个PowerShell答案。请记住,
WMI
在PowerShell Core中不可用。请使用CIM。字符串
是否有单独的文件系统压缩和映像压缩?
下面是生成shell属性列表的代码。除了“video compression”之外,我没有看到任何关于压缩的内容,我不确定这是否是您想要的。
型