【发布时间】:2013-01-30 06:45:05
【问题描述】:
我有一个 .net 3.5 应用程序,它将处理大量图像。我需要检查图像扩展名、图像高度和宽度以及 PPI 是否正确。我不想将整个图像加载到 .net 图像或位图中,这将花费很长时间并且会占用大量资源。我不能使用第三方插件或dll,当然需要昨天完成。
所以,我正在读取文件的初始字节,检查“魔术”数字以确保图像扩展名匹配,然后是我需要处理的大多数图像类型的图像高度和宽度。这速度更快,资源消耗更少。我可以使用一些帮助来从某些图像类型中读取 PPI,而到目前为止,其中两种类型让我无法验证扩展。
BMP、JPG、GIF 和 PNG 我在阅读 PPI 时需要帮助。
- 正在寻找类似位于偏移 xx 处的东西。
TIF、EPS 和 PSD 我需要帮助来阅读高度、宽度和 PPI。
我几乎被 eps 和 Psd 文件困住了,任何事情都会有所帮助。
是的,我知道 tiflib,它看起来很棒,而且远远超出了我的需要。一个只处理高度、宽度和 PPI 的更轻的版本会很棒。如果必须,我可以这样做,但我希望有人准备好了:-)
【问题讨论】:
-
要确定PPI,对于所有格式来说,它不会像“偏移XX”那么简单。例如,PNG 像素尺寸是可选的 (libpng.org/pub/png/book/chapter11.html#png.ch11.div.8),并且位于一个块中以及其他块中。您必须阅读大块,直到找到 pHYs 一个(如果存在)。其他格式甚至不存储像素尺寸,或者像素尺寸可能不正确(但应用程序未使用,因此它仍然有效)。
-
PPI 也取决于输出显示。使用 PPI 的文件格式通常用于参考原始输出设备。
-
EPS和PSD是复合存储文件。您将无法在特定偏移处找到您要查找的内容。包含的每个图像都可以是位图或矢量图形。任何一种文件类型都可能包含大量图像。
-
@SimonMourier,这将是一个自动过滤器,在人们真正看到照片之前,我们正在努力减少该人看到的“坏”照片的数量。如果数据不正确或不存在,我们将在下一步中捕获它。循环遍历这些块直到我找到我正在寻找的东西或者我点击图像数据是我必须为它看起来像的 PNG 做的事情。
-
@AdamZuckerman,PPI 在几个不同的环境中使用,并且经常被错误地与 DPI 互换。在这种情况下,我正在查看照片,并使用分辨率和像素密度 (PPI) 来评估拍摄时的图像质量。 elizabethhalford.com/editing/pixels-and-dots-the-gameandrewdaceyphotography.com/articles/dpi