如何在 django 中获取上传图像的宽度和高度?
不要使用 PIL。
ImageField 将自动处理图像的宽度和高度。你不需要做任何事情。
将这些代码附加到项目目录中 setting.py 的末尾
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
然后更改项目目录中的urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path(...),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
模型.py
class Picture(models.Model):
image = models.ImageField(upload_to='images/', width_field = 'image_width', height_field='image_height')
image_width = models.IntegerField(default=0)
image_height = models.IntegerField(default=0)
表格.py
class PictureForm(forms.Form)
image = forms.ImageField()
视图.py
def createPicture(request):
form = PictureForm(request.POST, request.FILES)
if form.is_valid():
picture = Picture()
picture.image = form.cleaned_data['image']
picture.save()
return HttpResponseRedirect(reverse('picture-list'))
else:
form = PictureForm()
return render(request, 'template_file', {'form' : form})
委托给专门用于处理图像的包。比如太平船务。
DjangoImageField
会自动执行此计算,但您需要安装 PIL。
设置完成后,您将自动获取图像height
的width
属性,因此您可以执行以下操作:
class SomeModel(models.Model):
img = models.ImageField(upload_to='images/')
foo = SomeModel.objects.get(pk=1)
print('The height is {0.height} and the width is {0.width}'.format(foo.img))