這不是問題,而是試圖提高我對 DPI 如何以各種文件格式儲存的理解,並討論其工作原理的原因。
我對圖像(JPG、PNG 和 Tiff)進行了大量工作並檢測它們的解析度。
例如,我可以在 Imagick 中的映像上運行它:
$imagick = new Imagick($filename); $data = $imagick->identifyimage(); var_dump($data);
它會給我解析度和單位(PixelsPerCentimeter 或 PixelsPerInch)
在Windows (11) 中,我只能在JPG 的屬性中看到分辨率,而不能在PNG 的屬性中看到分辨率,無論您將PSD 設置為PixelsPerCentimeter 還是PixelsPerInch,它都會顯示為( 300 dpi)。
在 Imagick(版本:ImageMagick 6.9.11-60 Q16 x86_64)中 - 它能夠看到以 PixelsPerCentimeter 保存的 JPG 和以 PixelsPerInch 保存的 JPG 之間的差異。但對於 PNG,無論我如何在 Photoshop 中建立/儲存它,它都會給出 PixelsPerCentimeter。
Photoshop (24.1.0) 也可以偵測 JPG 上的 PixelsPerCentimeter - 但 PNG 都「說」它們是 PixelsPerInch,即使我將它們儲存為 PixelsPerCentimeter。
現在我完全理解 118.11 PixelsPerCentimeter = 300 PixelsPerInch 但我真的很有興趣為什麼 Windows/Photoshop 和 Imagick 會這樣對待它們?
我確實考慮到一開始在 Photoshop 中建立檔案可能會產生副作用,因此我使用 Imagick 建立了一個檔案(PNG、300dpi、PixelsPerInch),但 Imagick 將其指定為 118 PixelsPerCentimeter。
所以我想我的問題是:這些差異是否取決於文件的讀取方式或文件類型中儲存的實際元資料?
這不是一個權威、完整的答案 - 更像是一個“提示”,因為沒有人回答您。
這有點像雷區,不同的軟體有不同的長度。如果您想進一步研究它,
exiftool
及其-v
選項通常是最有幫助的。關於 PNG 圖片
#原始 PNG 規範有一個
pHYs
塊,僅給出以米為單位的水平和垂直分辨率,英寸不可用。 此處描述了各種 PNG 標籤。某些軟體(ImageMagick 和
exiftool
)將(JPEG 樣式)APP1 資料(見下文)非正式地儲存在zTXt
區塊中。有些沒有。2017 年 7 月,PNG 規格更新為允許
eXIf
區塊。請參閱此處。關於 JPEG 影像
#在 JPEG 中,x/y 解析度可能儲存在 APP0、APP1 或 APP13 (Photoshop) 段中。我所知道的最好的描述是這裡。
我從來沒有對 XMP 資料那麼感興趣,但我相信 x/y 解析度也可能儲存在那裡。