跳转到主要内容

Django图像优化器(Compressor)

项目描述

django-image-optimizer pypi版本

https://img.shields.io/badge/license-MIT-blue.svg https://img.shields.io/pypi/pyversions/django-image-optimizer.svg https://img.shields.io/badge/Django-1.8%20%3E=%203.0-green.svg

Django Image Optimizer是一个简单的Django库,它允许通过使用TinyPNGPillow来优化图像。

安装

Django Image Optimizer可以直接从PyPI获取。

  1. 安装软件包。

$ pip install django-image-optimizer
  1. 不要忘记将'image_optimizer'添加到你的'INSTALLED_APPS'中。

# settings.py
INSTALLED_APPS = [
    ....
    'image_optimizer',
]
  1. 你可以选择使用TinyPNG或Pillow来优化图像。通过设置以下内容来通知optimized_image你想使用哪个:

# To use Pillow
OPTIMIZED_IMAGE_METHOD = 'pillow'
# To use TinyPNG
OPTIMIZED_IMAGE_METHOD = 'tinypng'

如果为此设置设置了任何其他字符串,则表示不会进行优化。如果你不确定是否要使用TinyPNG或Pillow,请随时查阅每个的文档。

如果您选择使用TinyPNG,您需要从TinyPNG获取API密钥。请访问https://tinypng.com/developers获取获取API密钥的详细信息。完成此操作后,将以下设置添加到您的设置文件中。注意:保留此秘密是一个好主意

TINYPNG_KEY = 'your-key'
  1. 您可以通过导入它来使用OptimizedImageField

from django.db import models

from image_optimizer.fields import OptimizedImageField


class MyModel(models.Model):
    ...
    image = OptimizedImageField()


class MyModel2(models.Model):
    """
    If you using OPTIMIZED_IMAGE_METHOD = 'pillow'
    You can use this optional arguments.

    This model represents a MyModel2 with a few
    fields including a `image` field which is an OptimizedImageField
    instance with `optimized_image_output_size` and
    `optimized_image_resize_method` arguments set.

    This means that image would be a resized
    version of the source image, meant to keep a given screen resolution,
    in this case (400, 300) pixels.
    """
    image = OptimizedImageField(
        upload_to="uploads/%Y/%m/%d",
        optimized_image_output_size=(400, 300),
        optimized_image_resize_method="cover"  #  "crop", "cover", "contain", "width", "height", "thumbnail" or None
    )

并将图像保存到其中,就像您将图像保存到Django ImageField一样。优化后的图像将替换未优化的图像保存在url字段中。

  1. 或者,您可以直接从utils中使用image_optimizer函数。

from image_optimizer.utils import image_optimizer


def post_image(request):
    image_data = request.FILES.get('image')
    image_data = image_optimizer(image_data=image_data,
                                 output_size=(400, 300),
                                 resize_method='cover')
    ....

附言

关于TinyPNG API密钥的说明:如果您获得了免费的TinyPNG API令牌,您每月的图像优化限制为500个,因此如果您有大量图像,此函数可能会失败。您可以获取付费API密钥,或者等到下个月。

此项目分支自:https://github.com/dchukhin/django_optimized_image

项目详情


下载文件

下载适用于您的平台文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。

源分布

django-image-optimizer-1.0.3.tar.gz (6.4 kB 查看哈希值)

上传时间

由以下机构支持