Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用Python提取JPEG图像文件dpi并计算物理尺寸

使用Python提取JPEG图像文件dpi并计算物理尺寸

作者头像
Python小屋屋主
发布于 2018-04-16 06:52:07
发布于 2018-04-16 06:52:07
4K0
举报
文章被收录于专栏:Python小屋Python小屋

感谢浙江省浦江中学方春林老师提供的问题、测试图像和第一版本的代码!

下面的代码需要安装Python图像处理库pillow,由于不同公司对JPEG压缩算法和格式的实现不完全一样,有些类型的jpg文件暂时无法提取dpi信息,如果找到好的办法的话后期会再进行补充。

from os import listdir

from PIL import Image

from PIL.ExifTags import TAGS

def getPhysicalSize(fn):

#打开图像文件并获取以像素为单位的尺寸

im = Image.open(fn)

width, height = im.size

#尝试直接获取dpi信息

try:

dpi = im.info['dpi']

except:

#如果直接获取失败,再尝试获取exif信息

t = {}

info = im._getexif()

#获取失败,直接返回

if not info:

return 'Not known'

#从exif信息中提取水平分辨率和垂直分辨率

for k, v in info.items():

tt = TAGS.get(k)

if tt in ('XResolution', 'YResolution'):

t[tt] = v

dpi = [item[1] for item in sorted(t.items())]

#获取失败,返回

if not dpi:

return 'Not known'

#不同压缩格式的文件信息保存方式不一样

#适当转换一下

if isinstance(dpi[0], tuple):

w_dpi, h_dpi = dpi[0][0], dpi[1][0]

else:

w_dpi, h_dpi = dpi

#返回物理尺寸信息,像素数/dpi分辨率,再换算成毫米

return (round(width/w_dpi*25.4,2), round(height/h_dpi*25.4,2))

for fn in (fns for fns in listdir('.') if fns.lower().endswith(('.jpg', '.jpeg'))):

print(fn, ':', getPhysicalSize(fn))

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-11-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
你的照片安全么?
照片元信息 我们平时拍摄的图片,不仅包含了可见的像素信息,还包含了我们看不到的隐藏信息(元信息),而这些元信息,往往会不经意间泄露我们的隐私. ---- 我们先来看看平时我们拍摄的照片里面,到底藏了哪些信息; (1) iPhone6s照片元信息的提取: iPhone6s 运行脚本 手机拍摄的照片,元信息非常丰富,包含了光圈/快门等拍摄参数,也包含了拍摄时间,拍摄地点等个人隐私信息,所以不要轻易将未经处理的原图发送给他人,尤其不要随意上传原图! (2) 佳能70D拍摄照片元信息的提取:
zhaoolee
2018/04/19
1K0
你的照片安全么?
python 获取网站上所有图片的元数据信息
import optparse from PIL import Image from PIL.ExifTags import TAGS import urllib2 from bs4 import BeautifulSoup as BS from os.path import basename from urlparse import urlsplit
用户5760343
2019/07/31
1.6K0
JPEG/Exif/TIFF格式解读(2):图片元数据保存及EXIF详解
元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息。用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。
周陆军博客
2023/04/22
11.2K0
【5分钟实战】一键搞定照片管理难题!CodeBuddy智能批量重命名让你的图片库井井有条
你是否曾经面对过这样的情况:手机里数百张照片杂乱无章,电脑中的项目素材命名混乱,找一张特定的图片要翻找半天?在数字资产日益增长的今天,高效的文件管理已经成为提升工作效率的关键因素。
全栈若城
2025/05/24
1830
使用PHP获取图像文件的EXIF信息
在我们拍的照片以及各类图像文件中,其实还保存着一些信息是无法直观看到的,比如手机拍照时会有的位置信息,图片的类型、大小等,这些信息就称为 EXIF 信息。一般 JPG 、 TIFF 这类的图片文件都会有这样的信息。EXIF 其实就是专门为这种数码照片所定制的,专门用于记录数码照片的属性信息和拍摄数据的,最初由日本制定。这个其实很好理解,日本对相机行业基本是垄断般的存在,所以这类的标准当然就是由他们制定啦!
硬核项目经理
2021/08/06
1.8K0
Python 获取图像 GPS 信息
EXIF(Exchangeable Image File Format)是一种用于存储图像拍摄相关信息的标准,这些信息包括相机设置、拍摄时间、地点等。EXIF信息通常嵌入在JPEG、TIFF和RAW图像文件中,以便于软件和设备(如数字相机、手机、扫描仪)能够读取和使用这些信息。
为为为什么
2024/05/16
3320
Python 获取图像 GPS 信息
Python 进行数字取证调查
以管理员权限开启cmd,输入如下命令来列出每个网络显示出profile Guid对网络的描述、网络名和网关的MAC地址
王 瑞
2022/12/28
8060
Python 进行数字取证调查
C语言之图像文件的属性
本项目的目标是编写一个 C 语言程序,能够读取 BMP 格式的图像文件,并提取图像的基本属性,如宽度、高度、颜色深度等。程序需要解析文件格式并提取属性,但不需要对图像进行渲染或处理。
LucianaiB
2025/01/24
990
C语言之图像文件的属性
学会这些Python美图技巧,就等着女朋友夸你吧
Python中有许多用于图像处理的库,像是Pillow,或者是OpenCV。而很多时候感觉学完了这些图像处理模块没有什么用,其实只是你不知道怎么用罢了。今天就给大家带了一些美图技巧,让你的图美翻全场,朋友圈赞不绝口,女朋友也夸你,富贵你好厉害啊!
ZackSock
2020/05/18
5700
学会这些Python美图技巧,就等着女朋友夸你吧
基于街景图像的武汉城市绿化空间分析
作者:郭子豪 中国地质大学(武汉)研究生 HPSCIL Urban Comp 城市之光团队成员
陈南GISer
2024/05/20
6260
基于街景图像的武汉城市绿化空间分析
Python爬虫新手进阶版:怎样读取非结构化网页、图像、视频、语音数据
导读:常见的数据来源和获取方式,你或许已经了解很多。本文将拓展数据来源方式和格式的获取,主要集中在非结构化的网页、图像、视频和语音。
IT阅读排行榜
2018/08/16
2.4K0
Azure 机器学习 - 使用 AutoML 和 Python 训练物体检测模型
首先需要设置用于自动化 ML 模型训练的计算目标。 用于图像任务的自动化 ML 模型需要 GPU SKU。
TechLead
2023/11/07
2840
Azure 机器学习 - 使用 AutoML 和 Python 训练物体检测模型
【AI绘画】Midjourney前置指令/blend、/info、/subscribe详解
本文主要介绍了 Midjourney 的几个关键前置指令,包括 /blend、/info 和 /subscribe。通过对这些指令的深入了解,相信读者能够更好地使用Midjourney 平台的功能,从而提升创作效率与生图效果。
CSDN-Z
2024/10/17
3500
【AI绘画】Midjourney前置指令/blend、/info、/subscribe详解
JPEG 白皮书: 建立媒体区块链的标准化框架
虚假新闻、版权侵犯、媒体取证、隐私和安全是数字媒体面临的新挑战。JPEG已经确定, 区块链技术作为一个技术组件, 在透明和可信的媒体交易中应对这些挑战具有巨大潜力。但是, 区块链需要被广泛采用的标准紧密集成, 以确保受保护图像的广泛互操作性。JPEG呼吁业界参与, 以帮助定义将推动标准化进程的用例和要求。
用户1324186
2018/12/25
1.1K0
JPEG 白皮书: 建立媒体区块链的标准化框架
独家 | 17个可以用于工作自动化的最佳Python脚本(上集)
您是否厌倦了在日常工作中做那些重复性的任务?简单但多功能的Python脚本可以解决您的问题。
数据派THU
2023/11/12
1.6K0
独家 | 17个可以用于工作自动化的最佳Python脚本(上集)
[Python开发工具]·Python各类图像库的图片读写方式总结
最近在研究深度学习视觉相关的东西,经常需要写python代码搭建深度学习模型。比如写CNN模型相关代码时,我们需要借助python图像库来读取图像并进行一系列的图像处理工作。我最常用的图像库当然是opencv,很强大很好用,但是opencv也有一些坑,不注意的话也会搞出大麻烦。近期我也在看一些别人写的代码,因为个人习惯不一样,他们在做深度学习时用于图片读取的图像库各不相同,从opencv到PIL再到skimage等等各种库都有,有些库读进来的图片存储方式也不太一样,如果不好好总结这些主流图像读写库特点的话,以后看代码写代码都会遇坑无数。这篇文章就总结了以下主流Python图像库的一些基本使用方法和需要注意的地方:
小宋是呢
2019/06/27
1.4K0
[Python开发工具]·Python各类图像库的图片读写方式总结
Transformers 4.37 中文文档(五)
目标检测是计算机视觉任务,用于检测图像中的实例(如人类、建筑物或汽车)。目标检测模型接收图像作为输入,并输出检测到的对象的边界框的坐标和相关标签。一幅图像可以包含多个对象,每个对象都有自己的边界框和标签(例如,它可以有一辆汽车和一座建筑物),每个对象可以出现在图像的不同部分(例如,图像可以有几辆汽车)。这个任务通常用于自动驾驶,用于检测行人、道路标志和交通灯等。其他应用包括在图像中计数对象、图像搜索等。
ApacheCN_飞龙
2024/06/26
4890
Transformers 4.37 中文文档(五)
python读取图像数据的一些方法[通俗易懂]
工作和学习中设计一个神经网络中经常需要设计一个数据载入器。首先第一件事我们要根据我们的任务要求确定一个数据提供的方法。如我们是一个分类任务,我们就需要读取数据和数据本身对应的标签。
全栈程序员站长
2022/10/01
7660
python读取图像数据的一些方法[通俗易懂]
Python实现跳词云舞
新建一个人像分割的实例,新注册用户可免费领取资源,官网地址:https://cloud.baidu.com/product/body/seg。下面是小编申请的一个实例:
皮大大
2023/08/25
3230
Auto-Tinder-训练AI玩打火机刷卡游戏
Auto Tinder是一个纯粹出于娱乐和教育目的而创建的概念项目。绝不能滥用它来伤害任何人或向平台发送垃圾邮件。自动绑定脚本不应与您的绑定文件一起使用,因为它们肯定违反了绑定服务条款。
代码医生工作室
2019/10/31
1.7K0
Auto-Tinder-训练AI玩打火机刷卡游戏
推荐阅读
相关推荐
你的照片安全么?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档