簡體   English   中英

使用 python 將大型 (1.3 GB) DNG 文件轉換為 PNG 時,圖像太大而無法處理

[英]Image too big for processing when converting large (1.3 GB) DNG file to PNG using python

我需要使用 python 將 DNG 文件轉換為 PNG。 我在這里找到了一篇如何轉換 DNG 的帖子: Opencv Python 打開 dng 格式

我試過的代碼:

#open dng and convert
import rawpy
import imageio
import os

os.chdir(r'C:\Path\to\dir')
path = r'path\to\file'

with rawpy.imread(path) as raw:
    rgb = raw.postprocess()

rgb_img.save('image.png')

但是,它會吐出以下錯誤:

line 13, in <module>
    rgb = raw.postprocess()
  File "rawpy\_rawpy.pyx", line 887, in rawpy._rawpy.RawPy.postprocess
  File "rawpy\_rawpy.pyx", line 790, in rawpy._rawpy.RawPy.dcraw_process
  File "rawpy\_rawpy.pyx", line 438, in rawpy._rawpy.RawPy.ensure_unpack
  File "rawpy\_rawpy.pyx", line 432, in rawpy._rawpy.RawPy.unpack
  File "rawpy\_rawpy.pyx", line 936, in rawpy._rawpy.RawPy.handle_error
rawpy._rawpy.LibRawTooBigError: b'Image too big for processing'

是否有轉換 DNG 文件的替代方法或繞過此錯誤的方法?

memory 圖像中的完全擴展似乎有 2GB 的限制。 我不是指您的 DNG 在磁盤上需要的空間,我指的是以下數字:

ImageHeight * ImageWidth * NumberOfChannels * BytesPerSample

因此,如果您使用exiftool通過單擊問題下方的edit並從以下位置添加 output 來告訴我們這些參數,將會很有用:

exiftool YOURIMAGE.DNG

該限制在變量imgdata.params.max_raw_memory_mb中強制執行,該變量在底層libraw C 代碼中設置為 2048。 我不確定如何通過 Python 接口進行設置。


使用ImageMagick將其轉換為 PNG 或 TIFF 可能會取得一些成功,如下所示:

magick YOURIMAGE.DNG converted.png

如果可行,您可以使用wand ,它是綁定到 Imagemgaick 的Python

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM