0

我想知道如何保存包含水印的照片。当前从表单中抓取照片并在其上创建水印,但单独保存。更准确地说,我希望处理和保存表单中发送的照片。

    if request.method == 'POST':
        form_w = ImageForm(request.POST, request.FILES)
        if form_w.is_valid():
            form = form_w.save(commit=False)
            cd = form_w.cleaned_data['img']
            im = Image.open(cd)
            width, height = im.size

            draw = ImageDraw.Draw(im)
            text = "TEST WATERMARK"

            font = ImageFont.truetype('arial.ttf', 36)
            textwidth, textheight = draw.textsize(text, font)


            margin = 10
            x = width - textwidth - margin
            y = height - textheight - margin


            draw.text((x, y), text, font=font)

            im.save('Luki/media/upload_p/{}'.format(cd))

            form.save()

            return redirect('Luki:gallery')
    else:
        form = ImageForm()
    return render(request, 'Luki/upload_img.html', {
        'form': form,

    })
4

2 回答 2

1

使用 'form.instance.save()' 而不是 'form.save()' 因为实例是绑定到表单的对象

于 2021-06-08T18:14:27.530 回答
0

img = Image.open(('Luki/media/upload_p/{}'.format(cd)))我分配给变量 的保存文件 具有这种格式<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=1920x1080 at 0x5823C10> 。我可以以某种方式对其进行转换,以便可以将其读取为 photo.jpg ?

于 2021-06-10T16:16:09.447 回答