加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Django管理员上传和图像到s3然后调整图像大小并保存拇指问题

发布时间:2020-12-20 12:17:51 所属栏目:Python 来源:网络整理
导读:错误尝试上传并使用pil和botos3以及 django default_storage将图像调整为s3后出错.我试图在管理员中保存. 这是代码: from django.db import modelsfrom django.forms import CheckboxSelectMultipleimport tempfilefrom django.conf import settingsfrom dj
错误尝试上传并使用pil和botos3以及 django default_storage将图像调整为s3后出错.我试图在管理员中保存.

这是代码:

from django.db import models
from django.forms import CheckboxSelectMultiple

import tempfile

from django.conf import settings

from django.core.files.base import ContentFile
from django.core.files.storage import default_storage as s3_storage
from django.core.cache import cache

from datetime import datetime

import Image,os
import PIL.Image as PIL
import re,os,sys,urlparse

class screenshot(models.Model):
    title = models.CharField(max_length=200)
    slug = models.SlugField(max_length=200)

    image = models.ImageField(upload_to='screenshots')
    thumbnail = models.ImageField(upload_to='screenshots-thumbs',blank=True,null=True,editable=False)

    def save(self):
        super(screenshot,self).save() # Call the "real" save() method
        if self.image:

            thumb = Image.open(self.image.path)
            thumb.thumbnail(100,100)

            filename = str(self.slug)

            temp_image = open(os.path.join('tmp',filename),'w')
            thumb.save(temp_image,'JPEG')

            from django.core.files import File
            thumb_data = open(os.path.join('/tmp','r')
            thumb_file = File(thumb_data)

            new_file.thumb.save(str(self.slug) + '.jpg',thumb_file)


    def __str__(self):
        return self.title

这只是我试图让它工作的众多方法之一,我得到(2,’没有这样的文件或目录’)或其他一些错误.

请有人帮助我让它工作.我希望它使用django后端来上传的图像被调整大小并保存为缩略图然后保存.如果您需要了解任何信息,请与我们联系.我很乐意使用django片段 – http://djangosnippets.org/snippets/224/,但我不知道要提供什么数据.我得到相同的IOErrors和’没有这样的路径/文件名’,即使主图像上传到s3罚款.我也尝试过这样的事情:

myimage = open(settings.MEDIA_URL + str(self.image)) 
myimage_io = StringIO.StringIO()
imageresize = myimage.resize((100,100),Image.ANTIALIAS)
imageresize.save('resize_100_100_aa.jpg','JPEG',quality=75)

现在已经有3天了,所以我开始有空了!谢谢

解决方法

为什么不尝试 sorl-thumbnail.它具有与默认的ImageField django提供的完全相同的界面,看起来它比使用自己的支持更好.

>存储支持>可插拔引擎支持(PIL,pgmagick)>可插入密钥值存储支持(redis,缓存db)>可插拔后端支持>管理员集成,可以删除>假一代>灵活,简单的语法,不生成HTML>用于删除缩略图的模型的ImageField> CSS样式裁剪选项>垂直定位的保证金计算

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读