Python 的 toDataUrl 等价方法

0 投票
1 回答
1498 浏览
提问于 2025-04-18 18:45

我想在Python中做和JavaScript里一样的事情。在JavaScript中,我可以很简单地在一个画布上绘图,然后用toDataUrl(imageFormat, quality)这个方法把图像转成一个base64编码的字符串。

在Python中有没有什么方法可以做到这一点呢?

我在Python中做过这个

from PIL import Image,

im = Image.new('L', (width, height))
output = StringIO()
im.save(output, "JPEG", quality=89)

但是输出的格式不是JPEG,我觉得是PNG格式。

那么有没有办法让我实现和todataurl一样的功能呢?我需要的是JPEG格式,并且要有特定的质量。

如果有人有好的主意,我会非常感激。

1 个回答

1

试试这个:

import base64
from PIL import Image
import StringIO

im = Image.new('L', (width, height))
output = StringIO.StringIO()
im.save(output, "JPEG", quality=89)

encoded_string = base64.b64encode(output.getvalue())

当宽度和高度都设置为50时,示例输出如下:

/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAQCAwMDAgQDAwMEBAQEBQkGBQUFBQsICAYJDQsNDQ0LDAwO
EBQRDg8TDwwMEhgSExUWFxcXDhEZGxkWGhQWFxb/wAALCAAyADIBAREA/8QAHwAAAQUBAQEBAQEAAAAA
AAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEI
I0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1
dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi
4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEBAAA/APz/AKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKK//2Q==

撰写回答