gpt4 book ai didi

python - 如何将 pil 裁剪图像保存到 django 中的图像字段

转载 作者:太空狗 更新时间:2023-10-30 02:58:23 25 4
gpt4 key购买 nike

我正在尝试将裁剪后的图像保存到模型中。我收到以下错误:

Traceback (most recent call last):  File "/mypath/lib/python2.7/site-packages/django/core/handlers/base.py", line 132, in get_response    response = wrapped_callback(request, *callback_args, **callback_kwargs)  File "/mypath/lib/python2.7/site-packages/django/contrib/auth/decorators.py", line 22, in _wrapped_view    return view_func(request, *args, **kwargs)  File "/mypath/views.py", line 236, in player_edit    player.save()  File "/mypath/lib/python2.7/site-packages/django/db/models/base.py", line 734, in save    force_update=force_update, update_fields=update_fields)  File "/mypath/lib/python2.7/site-packages/django/db/models/base.py", line 762, in save_base    updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)  File "/mypath/lib/python2.7/site-packages/django/db/models/base.py", line 824, in _save_table    for f in non_pks]  File "/mypath/lib/python2.7/site-packages/django/db/models/fields/files.py", line 313, in pre_save    if file and not file._committed:  File "/mypath/lib/python2.7/site-packages/PIL/Image.py", line 512, in getattr    raise AttributeError(name) AttributeError: _committed

我处理表单提交的 View 如下所示:

if request.method == 'POST':
form = PlayerForm(request.POST, request.FILES, instance=current_player)
if form.is_valid():

temp_image = form.cleaned_data['profile_image2']
player = form.save()
cropped_image = cropper(temp_image, crop_coords)
player.profile_image = cropped_image
player.save()
return redirect('player')

裁剪函数如下所示:

from PIL import Image
import Image as pil

def cropper(original_image, crop_coords):

original_image = Image.open(original_image)

original_image.crop((0, 0, 165, 165))

original_image.save("img5.jpg")

return original_image

这是将裁剪后的图像保存到模型的正确过程吗?如果是这样,为什么我会收到上述错误?

谢谢!

最佳答案

函数应该是这样的:

# The crop function looks like this:

from PIL import Image

from django.core.files.base import ContentFile

def cropper(original_image, crop_coords):
img_io = StringIO.StringIO()
original_image = Image.open(original_image)
cropped_img = original_image.crop((0, 0, 165, 165))
cropped_img.save(img_io, format='JPEG', quality=100)
img_content = ContentFile(img_io.getvalue(), 'img5.jpg')
return img_content

关于python - 如何将 pil 裁剪图像保存到 django 中的图像字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34140900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com