【发布时间】:2020-07-30 00:52:34
【问题描述】:
我有一张 .img 格式的图片。图像尺寸为 1920x1200 像素。这是一个 8 位深度的 RGB 图像。我正在使用以下 python 代码来恢复此图像。但是,错误可以显示图像但图像内容不正确。我不知道我哪里做错了。有人可以帮忙吗?
w, h = 1920, 1200 # img image size in px
# read img files and save them to png
with open(file_add, 'rb') as f:
# Seek backwards from end of file by 3 bytes per pixel
f.seek(-w*h*3, 2)
img = np.fromfile(f, dtype=np.uint8).reshape((h, w, 3))
# Save as PNG, and retain 8-bit resolution
PIL.Image.fromarray(img).save('result.png')
我想上传 img 文件,但是它超过了 2Mb 的限制。
【问题讨论】:
-
您是否尝试过直接使用 PIL 加载它,例如
PIL.Image.open(file_add)? -
"我想上传 img 文件,但是它超过了 2Mb 的限制。"你能制作一个导致同样问题的更小的文件吗? “可是,无法正确恢复。”这意味着什么?当你运行代码时会发生什么,这与应该发生的有什么不同?例如,如果它运行成功但
result.png看起来有问题,那么它有什么问题? -
.img并没有真正告诉您文件格式。例如,通道的顺序可以变化;或者不是将每个像素的数据存储在一起,它可以存储单独的颜色平面。文件来源中是否有一些可用的文档? -
files with an
.imgextension 有几种不同的类型,但它们都不是用于图形图像本身的——这似乎是您所期望的。请edit您的问题并指定这些文件中数据的格式。 -
感谢您的所有建议。是的,用我贴的代码可以打开img文件,但是图片不正确。 @KarlKnechtel,我没有来自文件源的文档。我也尝试只读取一个颜色平面,但它仍然给我一个错误的图像。 img 文件已上传到那里。任何人都可以帮助正确恢复它吗?谢谢
标签: python image numpy python-imaging-library