python 下载图片到内存卡_python - 获取图像大小而不将图像加载到内存中

如果您不关心图像内容,PIL可能是一种过度杀伤力。

我建议解析python magic模块的输出:

>>> t = magic.from_file('teste.png')

>>> t

'PNG image data, 782 x 602, 8-bit/color RGBA, non-interlaced'

>>> re.search('(\d+) x (\d+)', t).groups()

('782', '602')

这是libmagic的包装器,它读取尽可能少的字节以识别文件类型签名。

相关版本的脚本:

[https://raw.githubusercontent.com/scardine/image_size/master/get_image_size.py]

[更新]

嗯,不幸的是,当应用于jpegs时,上面给出了''JPEG图像数据,EXIF标准2.21'“。 没有图像尺寸! - 亚历克斯弗林特

看起来像jpegs是魔法抗性的。:-)

我明白为什么:为了获得JPEG文件的图像尺寸,你可能需要阅读比libmagic喜欢的字节。

卷起袖子,带着这个非常未经测试的片段(从GitHub获取),不需要第三方模块。

c058130bbef436616f80551e5b2bc6f2.png

#-------------------------------------------------------------------------------

# Name: get_image_size

# Purpose: extract image dimensions given a file path using just

# core modules

#

# Author: Paulo Scardine (based on code from Emmanuel VAÏSSE)

#

# Created: 26/09/2013

# Copyright: (c) Paulo Scardine 2013

# Licence: MIT

#-------------------------------------------------------------------------------

#!/usr/bin/env python

import os

import struct

class UnknownImageFormat(Exception):

pass

def get_image_size(file_path):

"""

Return (width, height) for a given img file content - no external

dependencies except the os and struct modules from core

"""

size = os.path.getsize(file_path)

with open(file_path) as input:

height = -1

width = -1

data = input.read(25)

if (size >= 10) and data[:6] in ('GIF87a', 'GIF89a'):

# GIFs

w, h = struct.unpack("

width = int(w)

height = int(h)

elif ((size >= 24) and data.startswith('\211PNG\r\n\032\n')

and (data[12:16] == 'IHDR')):

# PNGs

w, h = struct.unpack(">LL", data[16:24])

width = int(w)

height = int(h)

elif (size >= 16) and data.startswith('\211PNG\r\n\032\n'):

# older PNGs?

w, h = struct.unpack(">LL", data[8:16])

width = int(w)

height = int(h)

elif (size >= 2) and data.startswith('\377\330'):

# JPEG

msg = " raised while trying to decode as JPEG."

input.seek(0)

input.read(2)

b = input.read(1)

try:

while (b and ord(b) != 0xDA):

while (ord(b) != 0xFF): b = input.read(1)

while (ord(b) == 0xFF): b = input.read(1)

if (ord(b) >= 0xC0 and ord(b) <= 0xC3):

input.read(3)

h, w = struct.unpack(">HH", input.read(4))

break

else:

input.read(int(struct.unpack(">H", input.read(2))[0])-2)

b = input.read(1)

width = int(w)

height = int(h)

except struct.error:

raise UnknownImageFormat("StructError" + msg)

except ValueError:

raise UnknownImageFormat("ValueError" + msg)

except Exception as e:

raise UnknownImageFormat(e.__class__.__name__ + msg)

else:

raise UnknownImageFormat(

"Sorry, don't know how to get information from this file."

)

return width, height

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/512783.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

搭载第四代自研神龙架构 阿里云发布RDMA增强型实例等多款新品

12月21日消息&#xff0c;阿里云发布多款基于自研神龙架构的弹性计算新品&#xff0c;包括RDMA增强型实例、800G GPU超算实例、FPGA计算型实例、GPU图形计算型实例等&#xff0c;在性能方面大幅提升&#xff0c;同时增加了多种服务形态&#xff0c;将计算延伸至客户身边&#x…

最新光子计算处理器面世:单个光子芯片集成超万个光子器件,频率达1GHz

12月15日&#xff0c;光子计算芯片公司曦智科技&#xff08;Lightelligence&#xff09;发布了其最新高性能光子计算处理器&#xff1a;PACE&#xff08;Photonic Arithmetic Computing Engine&#xff0c;光子计算引擎&#xff09;。该处理器单个光子芯片中集成超过10,000个光…

Snowflake如日中天是否代表Hadoop已死?大数据体系到底是什么?

简介&#xff1a; 本文作者关涛是大数据系统领域的资深专家&#xff0c;在微软&#xff08;互联网/Azure云事业群&#xff09;和阿里巴巴&#xff08;阿里云&#xff09;经历了大数据发展20年过程中的后15年。本文试从系统架构的角度&#xff0c;就大数据架构热点&#xff0c;每…

金蝶携手工商银行完成首单数字人民币费用报销业务

2021年12月17日&#xff0c;金蝶业务系统成功完成首单使用数字人民币进行的公转私支付业务。据悉&#xff0c;这是中国工商银行股份有限公司&#xff08;以下简称“工商银行”&#xff09;第一笔使用“数字人民币银企直连”进行的公转私支付费用报销业务&#xff0c;也是金蝶成…

Java对象转换方案分析与mapstruct实践

简介&#xff1a; 随着系统模块分层不断细化&#xff0c;在Java日常开发中不可避免地涉及到各种对象的转换&#xff0c;如&#xff1a;DO、DTO、VO等等&#xff0c;编写映射转换代码是一个繁琐重复且还易错的工作&#xff0c;一个好的工具辅助&#xff0c;减轻了工作量、提升开…

致敬 hacker |盘点内存虚拟化探索之路

简介&#xff1a; 内存虚拟化相比裸机&#xff0c;仍然存在较大差异&#xff0c;是当下值得关注的问题&#xff01; 云与虚拟化 云计算是通过 Internet 服务的方式提供动态可伸缩资源的计算模式&#xff0c;经过多年的发展已成为企业 IT 技术的重要支撑。虚拟化是云计算的核心…

minwindow java_java中setMinWindowLayout()是什么呀?

展开全部分析代码 ,可以看出SInfo 是JFrame的子类.setMinWindowLayout() 方法,就可能就是该类自定义的方法,因为JFrame并没e68a8462616964757a686964616f31333431373937有该方法.根据该方法名推测, 这个方法应该就是设置界面布局的方法,主要用于调整组件(按钮,输入框...等)的位…

走进新华三解决方案 360°业务能力中心,读懂新华三如何助力企业数字化转型

随着数字化转型步入“深水区”&#xff0c;云计算、5G、AI 等新一代技术落地应用各行各业。企业对“端到端”解决方案的需求愈发强烈&#xff0c;亟待统一规划、建设和交付的“端到端”解决方案。对此&#xff0c;作为业界领先的数字化解决方案领导者&#xff0c;新华三自 2019…

阿里云马涛:什么是操作系统的云原生?

简介&#xff1a; 云原生已经成为IT界最流行的一个定语&#xff0c;似乎不谈云原生就out了&#xff0c;但什么才是真正的云原生&#xff1f; 注&#xff1a;本文作者马涛&#xff0c;阿里云智能研究员、阿里巴巴集团内核团队创始人之一、阿里云基础软件部操作系统团队负责人。…

pip 安装_安装 pip 轻松管理 PyPI 软件包 | Linux 中国

在 Linux、Mac 或 Windows 上为旧版 Python 安装 pip。-- Vijay Singh KhatriPython 是一种功能强大、流行广泛的编程语言&#xff0c;在常规编程、数据科学等很多方面它都有丰富的软件包可供使用。但这些软件包通常都不会在 Python 安装时自动附带&#xff0c;而是需要由用户自…

技术解析:一文看懂 Anolis OS 国密生态 | 龙蜥专场

简介&#xff1a; Anolis OS国密是社区在Anolis OS上做的国密技术解决方案。 编者注&#xff1a;本文系两位演讲者整理&#xff0c;他们在2021年阿里云开发者大会的「开源操作系统社区和生态分论坛」上带了分享&#xff0c;演讲主题为《国密技术开发与实践》&#xff0c;为国内…

场景联创 施耐德电气“绿色智能制造创赢计划”第二季收官

中国上海&#xff0c;2021年12月21日——今日&#xff0c;由工业和信息化部国际经济技术合作中心&#xff08;工信部国合中心&#xff09;与施耐德电气主办的“绿色智能制造创赢计划”第二季总决赛在上海举办。经过半年多的加速营培训、场景探访与联合方案开发&#xff0c;最终…

DLF +DDI 一站式数据湖构建与分析最佳实践

简介&#xff1a; 本文由阿里云数据湖构建 DLF 团队和 Databricks 数据洞察团队联合撰写&#xff0c;旨在帮助您更深入地了解阿里云数据湖构建&#xff08;DLF&#xff09;Databricks 数据洞察&#xff08;DDI&#xff09;构建一站式云上数据入湖。 作者陈鑫伟&#xff08;熙康…

pip升级python包命令_python安装扩展库常用的是什么工具

pip 是 Python 包管理工具&#xff0c;该工具提供了对Python 包的查找、下载、安装、卸载的功能。目前如果你在 http://python.org 下载最新版本的安装包&#xff0c;则是已经自带了该工具。Python 2.7.9 或 Python 3.4 以上版本都自带 pip 工具。pip 官网&#xff1a;https:/…

获国际架构顶会ATC2021最佳论文!Fuxi2.0去中心化的调度架构详解

简介&#xff1a; 近日&#xff0c;在国际体系架构顶会USENIX ATC2021上&#xff0c;阿里云飞天伏羲团队与香港中文大学合作的一篇论文《Scaling Large Production Clusters with Partitioned Synchronization》不仅成功被大会录取&#xff0c;而且被大会专家组评定为三篇最佳论…

svg入门经典pdf_机器学习最好的入门课程是什么?

最近老胡不太忙了&#xff0c;项目告一段落&#xff0c;摸鱼时间多了一些。昨天我翻译了一个思维导图《超详细的人工智能专家路线图》强烈建议没有看的同学看一看&#xff0c;查漏补缺必备机器学习从 入 门 到 精 通 路 线 图翻完之后自己也有很大的收获&#xff0c;所以准备干…

MaxCompute跨境访问加速解决方案

简介&#xff1a; MaxCompute联合全球加速服务&#xff0c;为有跨境访问需求的MaxCompute客户提供一套高效稳定的跨境访问加速方案。 MaxCompute联合全球加速服务&#xff0c;为有跨境访问需求的MaxCompute客户提供一套高效稳定的跨境访问加速方案。 背景信息 MaxCompute的大…

借助钉钉宜搭,奶茶店开始用黑科技管理门店了

简介&#xff1a; 投诉处理的速度变快了——这是7分甜消费者在这个初夏最直观的感受&#xff0c;借助钉钉宜搭的低代码能力实现的数字化管理&#xff0c;过去7分甜的许多管理痛点&#xff0c;现在正被一一攻克。 一方小小的奶茶零售门店&#xff0c;内里乾坤万千。7分甜成立于2…

爬虫爬到的网页源代码不是真正的源代码_Python爬虫经常爬不到数据?你可以看一下这篇文章...

近期&#xff0c;通过做了一些小的项目&#xff0c;觉得对于Python爬虫有了一定的了解&#xff0c;于是&#xff0c;就对于Python爬虫爬取数据做了一个小小的总结&#xff0c;希望大家喜欢&#xff01;1.最简单的Python爬虫最简单的Python爬虫莫过于直接使用urllib.request.url…

德勤发布2021年度企业AI应用现状报告,AI驱动已成竞争必需品

1、报告显示&#xff0c;与全球企业相比&#xff0c;中国企业对AI的负面影响&#xff0c;表现出了更多恐惧和担忧。 2、战略上&#xff0c;报告鼓励企业抓住机会&#xff0c;相信一切皆有可能&#xff0c;不要让“成本支出”的目标导致错失良机。 3、报告显示尽管真正意义上的“…