如果 none 的图像处理 python 库(Pillow 和 cv2)无法读取,如何解码这个二进制图像文件?
How to decode this binary image file if none of image processing python libraries (Pillow and cv2) are unable to read?
我正尝试在 python 中使用 Pillow 和 cv2 读取此文件。但是,这两个库都没有这样做。
文件 here 在 google 驱动器上。
Pillow 引发“OSError:无法识别图像文件 0.jpg”
cv2 returns None
此二进制文件的扩展名为“.jpg”,可以使用 Window 的照片查看器轻松查看。
但是,我想读取这个二进制文件并将其解码为 python 中的图像。
有什么想法吗?
你的文件其实是一个JXR文件,可以看到前几个字节是:
49 49 BC
如果你将它加载到像 http://hexed.it
这样的十六进制编辑器中
签名是 IANA 注册的,参见 here。
你可以像这样用 imagecodecs 阅读它:
import imagecodecs
from pathlib import Path
# Slurp entire image data as binary
jxr = Path('0.jpg').read_bytes()
# Make into Numpy array
na = imagecodecs.jpegxr_decode(jxr)
print(na.shape) # prints (256, 512, 3)
或者,您可以在终端中使用 ImageMagick 将 JXR 转换为不那么微软的东西:
magick input.jxr output.jpg
或者,如果您有旧的 v6 ImageMagick,请使用:
convert input.jxr output.jpg
我正尝试在 python 中使用 Pillow 和 cv2 读取此文件。但是,这两个库都没有这样做。
文件 here 在 google 驱动器上。
Pillow 引发“OSError:无法识别图像文件 0.jpg” cv2 returns None
此二进制文件的扩展名为“.jpg”,可以使用 Window 的照片查看器轻松查看。
但是,我想读取这个二进制文件并将其解码为 python 中的图像。
有什么想法吗?
你的文件其实是一个JXR文件,可以看到前几个字节是:
49 49 BC
如果你将它加载到像 http://hexed.it
这样的十六进制编辑器中签名是 IANA 注册的,参见 here。
你可以像这样用 imagecodecs 阅读它:
import imagecodecs
from pathlib import Path
# Slurp entire image data as binary
jxr = Path('0.jpg').read_bytes()
# Make into Numpy array
na = imagecodecs.jpegxr_decode(jxr)
print(na.shape) # prints (256, 512, 3)
或者,您可以在终端中使用 ImageMagick 将 JXR 转换为不那么微软的东西:
magick input.jxr output.jpg
或者,如果您有旧的 v6 ImageMagick,请使用:
convert input.jxr output.jpg