相关疑难解决方法(0)

来自pil对象的md5

如何在不保存到文件的情况下获取pil对象的md5?

    imq.save('out.png')
    hash =  hashlib.md5(open('out.png','rb').read()).hexdigest()
Run Code Online (Sandbox Code Playgroud)

python md5 python-imaging-library

9
推荐指数
3
解决办法
5022
查看次数

如何将PIL图像传递给python-pptx中的Add_Picture

我正在尝试从剪贴板获取图像,并且想将该图像添加到 python-pptx 中。我不想将图像保存在磁盘中。我已经尝试过这个:

from pptx import Presentation
from PIL import ImageGrab,Image
from pptx.util import Inches
im = ImageGrab.grabclipboard()
prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(title_slide_layout)
left = top = Inches(1)
pic = slide.shapes.add_picture(im, left, top)
prs.save('PPT.pptx')
Run Code Online (Sandbox Code Playgroud)

但是出现这个错误

File "C:\Python27\lib\site-packages\PIL\Image.py", line 627, in __getattr__
    raise AttributeError(name)
AttributeError: read
Run Code Online (Sandbox Code Playgroud)

这有什么问题吗?

python python-imaging-library python-pptx

6
推荐指数
1
解决办法
3265
查看次数

Python PIL:查找图像的大小而不将其写为文件

编辑:这个问题已被标记为重复?我的问题显然是关于优化这个过程,而不是如何做到这一点.我甚至提供了代码来证明我已经找到了后者.互联网大厅监视器甚至在标记之前读过这些问题吗?

我有以下代码块来使用PIL压缩图像,直到所述图像具有一定的大小.

from PIL import Image
import os

def compress(image_file, max_size, scale):
    while os.path.getsize(image_file) > max_size:
        pic = Image.open(image_file)
        original_size = pic.size
        pic = pic.resize((int(original_size[0] * scale),
            int(original_size[1] * scale)),
            Image.ANTIALIAS)
        pic.save(image_file, optimize=True, quality=95)
Run Code Online (Sandbox Code Playgroud)

在这段代码中,我os.path.getsize(image_file)用来获取图像的大小.但是,这意味着每次循环运行时都必须保存文件pic.save(image_file, optimize=True, quality=95.

这个过程需要很长时间.

有没有办法通过某种方式获得PIL Image对象中图像的大小来优化它pic

python image python-imaging-library python-3.x

6
推荐指数
1
解决办法
4049
查看次数

在Python中将内存中的图像(或对象)附加到电子邮件中

我在内存中有一个我创建的图像(使用 numpy 和 PIL),我想以编程方式将其附加到创建的电子邮件中。我知道我可以将其保存到文件系统,然后重新加载/附加它,但这似乎效率低下:有没有办法将其通过管道传输到 mime 附件而不保存?

保存/重新加载版本:

from PIL import Image
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart

...some img creation steps...

msg = MIMEMultipart()
img_fname = '/tmp/temp_image.jpg'
img.save( img_fname)
with open( img_fname, 'rb') as fp:
    img_file = MIMEImage( fp.read() )
    img_file.add_header('Content-Disposition', 'attachment', filename=img_fname )
    msg.attach( img_file)

...add other attachments and main body of email text...
Run Code Online (Sandbox Code Playgroud)

python email-attachments python-imaging-library

4
推荐指数
1
解决办法
4370
查看次数

python PIL图像如何将图像保存到缓冲区,以便以后使用?

我有一个png应该转换为jpg并保存到的文件gridfs,我使用python的PILlib加载该文件并执行转换工作,问题是我想将转换后的图像存储到MongoDB Gridfs中,在保存过程中,我可以只需使用该im.save()方法。所以我用a StringIO来保存临时文件,但是不起作用。

这是代码片段:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from PIL import Image
from pymongo import MongoClient
import gridfs
from StringIO import StringIO


im = Image.open("test.png").convert("RGB")

#this is what I tried, define a 
#fake_file with StringIO that stored the image temporarily.
fake_file = StringIO()
im.save(fake_file,"jpeg")

fs = gridfs.GridFS(MongoClient("localhost").stroage)

with fs.new_file(filename="test.png") as fp:
    # this will not work
    fp.write(fake_file.read())


# vim:ai:et:sts=4:sw=4:
Run Code Online (Sandbox Code Playgroud)

我对python的IO机制非常了解,如何使这项工作有效?

python io stringio gridfs

4
推荐指数
1
解决办法
5105
查看次数

在 FastAPI 中渲染 NumPy 数组

我发现如何使用 FastAPI 将 numpy 数组作为图像返回?然而,我仍然在努力展示图像,它看起来只是一个白色的方块。

io.BytesIO我像这样读入一个数组:

def iterarray(array):
    output = io.BytesIO()
    np.savez(output, array)
    yield output.get_value()
Run Code Online (Sandbox Code Playgroud)

在我的端点中,我的回报是StreamingResponse(iterarray(), media_type='application/octet-stream')

当我留空media_type以推断时,会下载一个 zip 文件。

如何将数组显示为图像?

python numpy bytesio fastapi

3
推荐指数
1
解决办法
7176
查看次数

cv2.imencode() 的作用是什么?我如何使用 PIL 实现相同的目的?

我正在尝试制作一个 REST API,我遇到了这行代码-

_, img_encoded = cv2.imencode('.jpg', image)
Run Code Online (Sandbox Code Playgroud)

这是做什么的?不幸的是,我无法在 m 项目中使用 OpenCV,那么有什么方法可以使用 PIL 实现同样的效果呢?提前致谢!

python opencv python-imaging-library

2
推荐指数
1
解决办法
2005
查看次数