跳转到主要内容

未提供项目描述

项目描述

imgsize

给定一些数据,判断这些数据是否可能是图片,如果是,确定它的尺寸和类型以及是否为动画图片。

格式

支持的格式

  • PNG/APNG
  • JPEG
  • GIF
  • AVIF/AVIS
  • BMP

用法

from imgsize import get_size

some_image_data: bytes = ...

size = get_size(some_image_data)
if size is None:
    print("Could not handle data")
else:
    size.width
    size.height
    size.mime_type
    size.is_animated

您不应该传递整个图像数据,前一千字节左右就足够了。

API

imgsize.get_size(data: bytes) -> imgsize.Size | None

给定提供的字节中的数据,尝试确定图像格式、尺寸以及是否为动画图片,否则返回 None。

imgsize.Size

一个具有四个属性(width: int, height: int, mime_type: str, is_animated: bool)的类。

imgsize.Size 的实例是可比较的、可散列的和可迭代的(返回 width 和 height)。

imgsize.Size 的实例有一个 as_dict() 方法,它返回属性作为字典。

注意

imgsize 不验证传递的数据是否是有效的图片。此库的预期用途是如果数据看起来不是您打算支持的图像格式,则尽早快速拒绝数据。如果您需要验证整个图像,建议的工作流程是使用此库拒绝非图像数据、不支持文件格式、超出您希望支持的尺寸或为动画图片(如果您只想要静态图片),然后将数据传递给一个实际进行图像解析的库以确定数据是否确实是图像。

imgsize 只支持少数几种格式,支持的格式主要基于浏览器支持的格式,并且不一定支持这些格式的所有功能或变体,因此可能会出现误报和漏报。

构建

使用 maturin 构建: maturin build

在本地环境中构建和安装: maturin develop

测试

Rust

cargo test

Python

必须在虚拟环境中运行以下命令

pip install '.[test]'
pytest python-tests

发布

  1. Cargo.toml中更改版本号
  2. 将更改推送到GitHub的主要分支(最好是通过Pull Request)
  3. 在GitHub上创建一个发布(git标签)
  4. 发布将自动推送到PyPI

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面