两行 Python 代码,精准识别一张图片的格式

基于Python的全格式图片二进制规律解析工具设计与实现 本文设计实现了一款基于Python的图片二进制解析工具,通过文件头特征识别JPEG、PNG、BMP等主流图片格式。采用分块读取机制解决大文件解析卡顿问题,内存占用稳定在100KB以内。工具可提取图片基础信息、格式专属规律及通用字节特征,支持高频字节统计与结果保存。经测试,该工具解析效率高,对100MB级文件处理仅需0.52秒,排版紧凑易读,显著优于传统手动分析方法,有效降低了二进制分析门槛。 阅读详情

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

PS:如有需要Python学习资料的小伙伴可以点击下方链接自行获取

Python免费学习资料、代码以及交流解答点击即可加入


在有些时候,我们拿到了一张图片的二进制数据,但却不知道这张图片应该是什么格式。例如,某个 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)

运行效果如下图所示:

 

 

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

利用百度AI开放平台 实现 图片中的文字识别 图片中的文字识别算是人工智能中的一个很常见的需求。当然我们可以自己建立和训练模型来实现文字识别,但是如果有现成的工具,而且还是由Baidu这么一个站在人工智能前沿的巨头开发出的工具(没错,指的就是AI开放平台了),那为什么不用呢?除非是要搞自主知识产权,避免后续产品研发中的商业纠纷,那么作为个人制作一些有用的工具来说,是非常之方便和可信赖的。 本篇博客就简单介绍一下利用百度AI开放平台 实现 图... 阅读详情

相关推荐

别再傻傻看后缀了!用Python脚本5分钟批量识别图片真实格式(附JPEG/PNG/GIF文件头对照表)

本文教你用Python脚本快速识别图片真实格式,绕过文件后缀名的误导。通过分析JPEG、PNG、GIF等图片的文件头十六进制签名,构建一个可靠的格式鉴定工具,适用于安全审计、数据恢复等场景,提升数字资产管理效率。

weixin_27061475的博客 196

Python判断图片是否是jpeg格式(非扩展名方式)

用扩展名判断文件格式非常简单,但是有可能是错误的。 jpeg文件有固定的文件头,其文件头的格式如下: [code="java"] Start Marker | JFIF Marker | Header Length | Identifier 0xff, 0xd8 | 0xff, 0xe0 | 2-bytes | "JFIF\0" [/code] 所以我们可以...

清风名 2996

3分钟搞定公文格式检查:用Python+LayoutParser自动识别标题层级与页边距(附完整代码)

本文介绍如何利用Python和LayoutParser库快速构建一个智能公文格式审查系统。通过解析文档视觉布局,该工具能自动识别标题层级、测量页边距,并与国家标准(如GB/T 9704)进行比对,在3分钟内生成格式检查报告,有效提升文档质量检测效率。

a1b2c3d的博客 1089

Python图像识别及操作

Python图像识别及操作

qq_36616956的博客 6929

将长表格图片转Excel表格

大家好,我是小小明。 最近很多朋友和同事问我如何将图片转Excel表格,老实说这方面现成的工具基本都不好使,不过百度AI有支持进行表格图片识别的接口,我们只要按照百度AI的要求传入相应的数据进行识别即可。 需求: 有两张超长的表格图片: 现在希望将其识别后转成Excel表格。 经查询两张图片的分辨率分别为791×7616和791×7531,可见其长度非常宽。 百度AI接口 首先我们进入百度AI,查看开放能力-》文字识别-》表格文字识别: https://ai.baidu.com/tech/ocr_othe

小小明-代码实体的专栏 3万+

40岁从智驾转具身智能之路

我的工作经历比较复杂,本科毕业后工作2年再次读研的,本科和硕士都是机械专业,硕士毕业后干了5年CAM和机器人再转入到自动驾驶行业。在自动驾驶干了8年,发现自动驾驶已经到了一个瓶颈,再次转行做具身智能。我就谈谈自己的最近这次转型之路。

hzm8341的博客 638

c 语言解析png图片文件信息,使用CImage加载PNG图片文件

在MFC开发中,大家很容易用到PNG等流行媒体格式。但是MFC只提供了简单的BMP,ICON等文件的加载。此时,使用CImage将使得图片加载轻松自如。CImage加载导入图片首先加载动态图片进入资源文件。在资源视图中右键RC-》add resource-》Import,选择你要添加的PNG图片,将分类定义为“PNG”,ID自定义。下列函数取自测试工程,其中m_Image为CImage实例,nID...

weixin_35766308的博客 1165

昆仑通态屏幕制作(连载1)---接触篇

写在开始 背景:最近出了做QT、LORA和4G,还做了一个屏幕。以前做了一个迪文的串口屏幕,发现网上的教程很多,所以连载就不更新了,并且迪文屏幕的设置什么的比较简单,应该从网上都能找到对应的教程。而现在用的昆仑通态的屏幕属于嵌入式屏幕,至于为啥叫嵌入式,也不是很明白,反正就是需要用这个屏幕,嵌入式不嵌入式不重要了。重要的是能用,并且能实现串口屏幕不能实现的功能。所以选定昆仑通态的一款屏幕。 文章语言:我比较习惯用比较糙的语言介绍做的东西,有时候不太准备,但是为了方便理解,还请大家谅解。用...

weixin_45426095的博客 6736

python turtle绕原点旋转_python习题

python习题第一章习题测试1【单选题】Python语言是由哪个人创造的?( )A、Dennis RitchieB、Linus Benedict TorvaldsC、Guido van RossumD、Tim Peters正确答案: C2【单选题】Python语言属于( )。A、机器语言B、汇编语言C、高级语言D、以上都不是正确答案: C3【单选题】下列选项中,不...

weixin_39765209的博客 5933

keil软件调试(Debug)仿真教程(软件调试和硬件调试的区别)及常用调试按键详解

单片机的调试分为两种,一种是使用软件模拟调试,第二种是硬件调试,两种调试方式各有不同,软件模拟调试有误差,而硬件调试,借用仿真器调试是嵌入式开发中常用方法。

weixin_51624736的博客 3万+

Python 爬虫实战:arXiv 学术论文 PDF 批量下载(含反爬策略与文件命名规范)

arXiv 是全球最大的免费开放预印本论文平台之一,涵盖物理学、数学、计算机科学等多个学科领域。研究人员、学生和工程师常常需要批量下载论文 PDF 进行文献综述、构建机器学习数据集或进行文本挖掘研究。然而,手动逐篇下载论文效率低下,因此开发一个自动化批量下载工具显得尤为重要。

yansideyucsdn的博客 1817

python 校验图片格式

Python相关视频讲解:python的or运算赋值用法用python编程Excel有没有用处?011_编程到底好玩在哪?查看python文件_输出py文件_cat_运行python文件_shel教你如何实现 Python 校验图片格式 整体流程 首先,让我们看一下整个实现“python 校验图片格式”的流程。 #r...

weixin_35725821的博客 398

华为OD机试 - 报文响应时间 - 贪心算法、位运算(Python/JS/C/C++ 2024 E卷 200分)

贪心算法是在每一步选择中都做出当前最优的选择,期望通过局部最优解推导出全局最优解的算法。

学Java,找哪吒 1758

PaddleOCR-json完全指南:如何用两行代码实现离线图片文字识别

PaddleOCR-json是一款基于PaddleOCR C++编译的离线图片文字识别命令行程序,它以JSON字符串形式输出结果,方便其他程序调用,并提供多种语言API。无需复杂配置,让你轻松实现本地图片文字识别功能。 ## 为什么选择PaddleOCR-json? PaddleOCR-json作为一款优秀的离线OCR工具,具有以下显著优势: - **便捷易用**:部署方便,解压即用,无需安

gitblog_00007的博客 648

Puchem化合物数据批量抓取采集_宝典_教程_Python爬虫

本文共计6500字,导出到PDF达42页(含代码)。从0教你如何抓取Pubchem化合物数据。 1、 Pubchem介绍 ​ Pubchem是美国国立卫生研究院(NIH)的开放式化学数据库,自2004年推出以来,pubchem已成为科学家、学生和公众的重要化学信息资源。其专门针对化学结构搜索,是网络药理学研究经常用到的数据库之一,不仅使用方便而且免费。 ​ PubChem主要包含小分子,但也包含较大的分子,例如核苷酸,碳水化合物,脂质,肽和化学修饰的大分子。收集有关化学结构,标识符,化学和物理性..

qq_34843422的博客 6073

定位分析RCU stall问题

在编译内核时打开或者在启动参数中增加这样统计信息是在采样周期中收集的。其中number行分别是发生stalled的cpu上的硬中断,软中断,和上下文的切换次数cputime行的前三列分别是硬中断,软中断和任务消耗的cpu时间,单位为ms.最后一个数字是统计的周期时间(ms).因为用户态的任务通常不会引起RCU CPU stalls,所以任务通常是内核任务,这也是为什么只统计system cpu的原因.

happyAnger6的专栏 1994

python批量读取图片文字格式_python批量识别图片指定区域文字内容

Python批量识别图片指定区域文字内容,供大家参考,具体内容如下简介对于一张图片,需求识别指定区域的内容1.截取原始图上的指定图片当做模板2.根据模板相似度去再原始图片上识别准确坐标3.根据坐标剪切出指定位置图片,也就是所需的内容区域4.对指定位置图片进行ocr识别环境Ubuntu18.04Python2.7所需Python模块用于识别模板再原始图的位置坐标pip install aircv用于...

weixin_39931101的博客 318

YOLOv11改进策略【卷积层】| CVPR-2024 PKI Module 获取多尺度纹理特征,适应尺度变化大的目标

PKI Module是。

Limiiiing的博客 2708

03|图片转文字:如何提高识别准确率?

不知道你有没有遇见过这样的场景:在工作中,你遇见了一个紧急情况,对方给你发了一串儿聊天记录的长截图,当你处理完事情想要复盘的时候,必须要把这些记录处理成文字,然后就发现图片转文字过程中会出现很多问题,还需要自己二次手动校对。经过不断尝试,就发现用互联网上的 AI 产品可以非常准确地识别出图片中的印刷体文字。而且再通过 Python 还可以实现把识别到的文字进行格式处理、文件保存等自动化操作。那么今天,就介绍两种能够精准、快速地把图片转成文字的方式:在线识别和离线识别。

qq_37756660的博客 3268

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

python识别图片文字_用 Python 把图片变文字

你遇到以下的情况吗?你负责整理一些文件,结果发现文件没有word存档,这又需要我们把图片变成word。如果你遇到过这些问题,千万不要错过 pytesseract 这个好工具!它能够用很简单、基础的方法将图片转换成文字(分辨图片中的文字)。在我们开始介绍 pytesseract 这个 Python 模块之前,先来认识一下 Tesseract OCR 到底是什么吧!OCR 为光学文字识别的缩写(Opt...

weixin_39797780的博客 134

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

python 识别登陆验证码图片(完整代码)_python带图片验证码的登录自动化实战

原标题:python带图片验证码的登录自动化实战近期在跟进新项目的时候,整体的业务线非常之长,会一直重复登录退出不同账号的这个流程,所以想从登录开始实现部分的自动化。因为是B/S的架构,所以采用的是selenium的框架来实现。大致实现步骤如下:1.环境准备2.验证码爬取3.识别方案选择4.图像处理和识别5.自动化实现一、环境准备系统:macOS软件:Pycharm语言:Python 2.7浏览器...

weixin_39757212的博客 1279

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

别再靠后缀名了!用Python脚本+十六进制头尾,5分钟批量识别图片真实格式(附代码)

本文介绍了一种通过Python脚本分析图片文件的十六进制头尾特征码来准确识别真实格式的方法。针对JPEG、PNG等常见格式提供了特征码对照表和完整代码实现,解决了依赖文件后缀名不可靠的问题,适用于批量检测和自动修正文件扩展名等场景。

weixin_33682790的博客 553

3分钟快速上手DeepFont字体识别:从图片精准识别5种主流字体

DeepFont字体识别技术基于Keras框架实现,能够在3分钟内从任意图片中精准识别出5种主流字体类型。这个开源项目采用深度学习算法,让字体识别变得简单高效,无论你是设计师、开发者还是内容创作者,都能轻松应用这项技术来提升工作效率。 ## 项目亮点与核心功能 DeepFont字体识别项目专注于解决实际设计工作中的字体识别需求,其核心优势在于: **多字体支持**:目前支持识别Lato、Ra

gitblog_00894的博客 507

YOLO X Layout API调用教程:两行Python代码集成文档分析功能

本文介绍了如何在星图GPU平台上自动化部署yolo_x_layout文档理解模型,并利用其API快速集成文档版面分析功能。通过简单的两行Python代码调用,即可实现对扫描文档中标题、表格、图片等11类元素的精准识别与定位,为自动化文档处理、信息提取等应用提供核心技术支持。

weixin_35414260的博客 170

别再傻傻看后缀了!用Python脚本5分钟批量识别图片真实格式(附JPEG/PNG/GIF文件头检测代码)

本文介绍如何使用Python脚本通过文件头检测技术快速识别图片的真实格式,避免依赖不可靠的文件后缀名。文章详细解析了JPEG、PNG、GIF等常见图片格式的文件头特征,并提供了完整的Python代码实现,包括批量检测、格式修复和性能优化技巧,适用于数据安全、自动化运维等场景。

weixin_30423977的博客 316
上一篇: 干货整理!10个Python图像处理工具,入门必看,提效大法
下一篇: 初窥 Python 的 import 机制
酸菜鱼编程
博客等级 码龄6年 155粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值