首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django ImageKit和PIL

Django ImageKit和PIL
EN

Stack Overflow用户
提问于 2015-09-18 06:38:49
回答 2查看 307关注 0票数 0

我正在使用django图像和创建自定义处理器。我想找出以KB (或字节)为单位的大小,但无法这样做。size属性给出的是尺寸,而不是文件的大小。我是一个新手,所以只能找到PIL的attr来获得更多关于图像的信息,但他们中没有一个人实际给出了文件大小的字节。

我已经为ModelForm创建了这个处理器。

你能帮个忙吗?

我正在添加到目前为止编写的代码。它更像是一个测试代码;

代码语言:javascript
复制
import urllib
import os 

class CustomCompress(object):
    def process(self, image):
        print 'image.width',image.width
        print 'image.height',image.height
        print 'image.size', image.size
        print 'image.info', image.info
        print 'image.tobytes', image.tobytes
        print 'image.category', image.category
        print 'image.readonly', image.readonly 
        print 'image.getpalette', image.getpalette
        st = os.stat(image).st_size
        print 'get_size ', st       

        return image

这是forms.py

代码语言:javascript
复制
class PhotoForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(PhotoForm, self).__init__(*args, **kwargs)
        self.fields['old_image'] = ProcessedImageField(spec_id='myapp:test_app:old_image',
                                           processors=[CustomCompress()],
                                           format='JPEG',

                                           # options={'quality': 60}
                                           )

    class Meta:
        model = Photo
        fields = ['old_image']
EN

回答 2

Stack Overflow用户

发布于 2015-09-18 06:56:40

在文件的实际路径上使用os.stat,以字节为单位获取大小,然后除以1024,得到KB:

代码语言:javascript
复制
import os
filesize = os.stat('/path/to/somefile.jpg').st_size
print filesize/float(1024)
票数 1
EN

Stack Overflow用户

发布于 2016-01-10 02:25:57

以字节为单位的大小因保存图像的格式而异。例如,如果使用高度压缩的JPEG (低质量),则图像将比PNG小。

如果你想在保存到文件之前看到它的大小,你可以把它保存到内存文件中,然后得到它的大小。

代码语言:javascript
复制
from io import BytesIO

class CustomCompress(object):
    def process(self, image):
        jpeg_file = BytesIO()
        png_file = BytesIO()

        image.save(jpeg_file, format='JPEG')
        image.save(jpeg_file, format='PNG')

        jpeg_size = len(jpeg_file.getvalue())
        png_size = len(png_file.getvalue())

        print('JPEG size: ', jpeg_size)
        print('PNG size: ', png_size)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32641051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档