首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AttributeError :类型对象'_io.StringIO‘没有特性'StringIO’

AttributeError :类型对象'_io.StringIO‘没有特性'StringIO’
EN

Stack Overflow用户
提问于 2018-09-21 17:46:28
回答 2查看 18.6K关注 0票数 5

在我的模型中,我想通过覆盖save方法来格式化图像字段

我已经在我的模型中做到了这一点

代码语言:javascript
复制
from PIL import Image as Img
from io import StringIO
from django.core.files.uploadedfile import InMemoryUploadedFile


class Blog(models.Model):
    Blog_image= models.ImageField(upload_to="...", blank=True)

    def save(self, *args, **kwargs):
    if self.Blog_image:
        image = Img.open(StringIO.StringIO(self.Blog_image.read()))
        image.thumbnail((900,300), Img.ANTIALIAS)
        output = StringIO.StringIO()
        image.save(output, format='JPEG', quality=150)
        output.seek(0)
        self.Blog_image = InMemoryUploadedFile(output,'ImageField', "%s.jpg" %self.Blog_image.name, 'image/jpeg', output.len, None)
    super(Blog, self).save(*args, **kwargs)

但是得到这个属性错误

代码语言:javascript
复制
AttributeError : type object '_io.StringIO' has no attribute 'StringIO'

谁能解释一下为什么我会收到这个错误?

我的python版本是3.6.4

我的Django版本是2.0.7

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-21 18:04:24

得到解决方案了

在pyhton 3.6.2上工作,但我不知道它保存在哪里,它是从哪个文件夹调用的

代码语言:javascript
复制
from PIL import Image
from io import BytesIO
from django.core.files.uploadedfile import InMemoryUploadedFile
import sys

    def save(self, *args, **kwargs):
    imageTemproary = Image.open(self.Blog_image)
    outputIoStream = BytesIO()
    imageTemproaryResized = imageTemproary.resize( (900,300) ) 
    imageTemproaryResized.save(outputIoStream , format='JPEG', quality=150)
    outputIoStream.seek(0)
    self.Blog_image = InMemoryUploadedFile(outputIoStream,'ImageField', "%s.jpg" %self.Blog_image.name.split('.')[0], 'image/jpeg', sys.getsizeof(outputIoStream), None)
    super(Blog, self).save(*args, **kwargs)

使用BytesIO完成后,它工作得很好

票数 8
EN

Stack Overflow用户

发布于 2019-10-02 14:15:54

输出= StringIO.StringIO()

将其更改为:

输出= StringIO()

您已经导入了io.StringIO()。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52440965

复制
相关文章

相似问题

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