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;每…

java编写管理系统_用java编写学生信息管理系统

《用java编写学生信息管理系统》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《用java编写学生信息管理系统(7页珍藏版)》请在人人文库网上搜索。1、用java编写学生信息管理系统import .*;importimport .*;import .*;import .*;class Stude nt impleme ntsString nu …

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

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

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

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

阿里云大学python_阿里云大学「学习路线」,一站式从入门到高手——Python、Java、前端、运维、数据库、云原生……...

阿里云大学有哪些学习路线&#xff1f;已上线(免费学习自测考试)&#xff1a;即将上线&#xff1a;迁移上云、大数据技术、人工智能、微服务、IoT、小程序……为什么要做学习路线&#xff1f;大家知道&#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;为国内…

mac mysql 的lb_四层LB和七层LB

总结: 基于MAC地址玩的是二层(虚拟MAC地址接收请求&#xff0c;然后再分配到真实的MAC地址),基于IP地址玩的是三层(虚拟IP地址接收请求&#xff0c;然后再分配到真实的IP地址),基于IP地址加端口玩的是四层(虚拟IP端口接收请求&#xff0c;然后再分配到真实的服务器)基于URL玩的…

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

中国上海&#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:/…

mysql 单机双实列_{ mysql } MySQL单机多实例及主从复制

没有过多的&#xff0c;直接上码my.cnf[mysql_multi]mysqld /usr/bin/mysqld_safemysqladmin /usr/bin/mysqladminuser multi_adminpassword multi_passlog /var/log/mysqld_multi.log[mysqld1]socket /var/lib/mysql/mysql.sock1port 3306log-error /var/log/mysqld1.…

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

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

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

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