python - 调整图像大小 Django
问题描述
我有 modek `from tempfile import NamedTemporaryFile
#models.py
upload_path = 'images'
class Image(models.Model):
image = models.ImageField(upload_to=upload_path, blank=True, null=True)
image_url = models.URLField(blank=True, null=True)
def clean(self):
if (self.image == None and self.image_url == None ) or (self.image != None and self.image_url != None ):
raise ValidationError('Empty or both blanked')
def get_absolute_url(self):
return reverse('image_edit', args=[str(self.id)])
def save(self):
if self.image_url and not self.image:
name = str(self.image_url).split('/')[-1]
img = NamedTemporaryFile(delete=True)
img.write(urlopen(self.image_url).read())
img.flush()
self.image.save(name, File(img))
super(Image, self).save()
该模型将链接 url 加载到 ImageField 中。
#forms.py
class ImageForm(ModelForm):
class Meta:
model = Image
fields = ['image', 'image_url']
这是我添加图像的表格。
#views.py
class DetailImage(UpdateView):
model = Image
form_class = ImageForm
template_name = 'image_edit.html'
context_object_name = 'image'
如何调整图像大小以保留原始文件,并且仅在后端显示宽度和高度发生变化的图像?
解决方案
推荐阅读
- google-bigquery - Union All 的列数不匹配
- python - How to perform on global dataframe in the target function of multiprocessing in python?
- azure - 从公共天蓝色函数调用私有函数?
- php - 具有 3 个表的复杂选择
- c# - .net core 和 powershell 之间的文件枚举性能
- c - 如何在 gtk3 c 中自动刷新窗口
- flutter - 照片变暗包相机
- javascript - requirejs 非 amd 脚本需要来自 amd 模块依赖的全局
- python - 添加 numpy 数组
- sql - 在 SQL 中,如果您尝试从另一个用户回滚到保存点,会发生什么?