怎么识别一张图片的格式

发布时间:2021-10-19 09:42:28 作者:iii
来源:亿速云 阅读:221

本篇内容介绍了“怎么识别一张图片的格式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

在有些时候,我们拿到了一张图片的二进制数据,但却不知道这张图片应该是什么格式。例如,某个 HTTP接口返回给你一段  Base64编码的图片数据,如下图所示:

怎么识别一张图片的格式

这段 Base64编码的数据,实际上对应了下面这种图片:

怎么识别一张图片的格式

那么问题来了,这张图片的格式是 JPG 还是 PNG?是 BMP 还是只有一帧的 GIF?

还有一些网站,他们的图片URL 格式类似于:https://www.kingname.info/xx/yy/zz,在 URL  中没有显示图片的格式。那么,当你用爬虫把这个图片下载下来以后,应该怎么保存呢?

虽然在大部分情况下,你确实可以把一张 PNG 格式的图片保存成  JPG,在电脑上也能双击打开看。但如果你要写一些程序来处理图片,那么图片的格式就至关重要了。例如 GIF 里面有帧信息,而JPG 里面却没有,PNG  图片有通道信息,而 JPG 也没有。如果你下载了一张JPG 的图片,却尝试用处理 GIF 的方式去提取帧信息,显然就会导致程序报错。

为了解决这个问题,你可以使用 Pillow 这个常见的图片处理库。它可以很容易识别一张常见格式图片的格式。

我们可以使用如下的命令来安装 Pillow:

python3 -m pip install pillow

安装完成以后,我们使用PIL导入图片处理的模块Image:

from PIL import Image  img = Image.open('/Users/kingname/Dropbox/50e452c3504a6.jpg') print(img.format)

运行效果如下图所示:

怎么识别一张图片的格式

成功把一张 JPG 格式识别为了 JPEG(JPG、JPEG  是同一个东西)。但显然,我们大多数情况下,图片是以二进制的形式存放到内存中的,而不是放在硬盘中。但Image.open()接收的参数是一个文件地址。我们需要让  Pillow 从内存中读取图片数据,生成图片对象以后,查看它的.format属性。

这个时候,就可以使用io模块,把二进制的数据包装成一个假的二进制文件句柄:

import io import base64 from PIL import Image  img_base64 = '图片对应的 base64' img_byte = base64.b64decode(img_base64.encode()) img_io = io.BytesIO(img_byte) img = Image.open(img_io) print(img.format)

运行效果如下图所示:

怎么识别一张图片的格式

这样一来,我们就成功识别了一张未知图片的格式了。

“怎么识别一张图片的格式”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

推荐阅读:
  1. python 图片识别
  2. python 3.7 识别图片

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

http

上一篇:Java中那些分不清的小细节有哪些

下一篇:gulp4中出现assert.js throw err AssertionError错误怎么办

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》