标签: pillow

了解Pillow中的直方图()

来自文档:

im.histogram()=>列表

返回图像的直方图.直方图作为像素计数列表返回,对应于源图像中的每个像素值.如果图像具有多于一个波段,则所有波段的直方图被连接(例如,"RGB"图像的直方图包含768个值).

据我所知,红色有256个值,绿色有256个,蓝色有256个(256*3 = 768).

for i, value in enumerate(im.histogram()):
    print i, value
Run Code Online (Sandbox Code Playgroud)

生产:

0 329
1 145
... (skipping some)
256 460
... (skipping some)
767 3953
Run Code Online (Sandbox Code Playgroud)

我的问题是:这是否意味着有:
329个像素是有值R = 0, G = 0, B = 0
145个像素是有值R = 1, G = 0, B = 0
460个像素是有值R = 256, G = 1, B = 0
3953点的像素是有一个价值R = 256, G = 256, B = 256等等?

这是我应该如何阅读输出?

python histogram pillow

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

从Python2升级到Python3时出现字符串/字节

我尝试使用Python 3以这种方式生成base64 img的QRCode:

def gen_qrcode(data):
    import base64
    import io
    import qrcode

    qrc = qrcode.QRCode(version=1,
                        error_correction=qrcode.constants.ERROR_CORRECT_Q,
                        box_size=8,
                        border=4)
    qrc.add_data(data)
    qrc.make(fit=True)
    img = qrc.make_image()

    output = io.StringIO()
    img.save(output, 'PNG') # This line is now a problem with Python 3
    output.seek(0)
    output_s = output.read()
    b64 = base64.b64encode(output_s)
    img_tag = '<img src="data:image/png;base64,{0}">'.format(b64)

    return img_tag
Run Code Online (Sandbox Code Playgroud)

它适用于Python 2(唯一更改的代码是由IO替换的StringIO)但现在我有一个错误:

TypeError at /qrcode
string argument expected, got 'bytes'
-> img.save(output, 'PNG')
Run Code Online (Sandbox Code Playgroud)

任何的想法?谢谢.

python qr-code python-imaging-library python-3.x pillow

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

如何发送使用 PIL/pillow 创建的嵌入图像作为电子邮件(Python 3)

我正在创建我想嵌入到电子邮件中的图像。我无法弄清楚如何将图像创建为二进制并传递到 MIMEImage。下面是我的代码,当我尝试读取图像对象时出现错误 - 错误是“AttributeError:'NoneType'对象没有属性'read'”。

image=Image.new("RGBA",(300,400),(255,255,255))
image_base=ImageDraw.Draw(image)
emailed_password_pic=image_base.text((150,200),emailed_password,(0,0,0))
imgObj=emailed_password_pic.read()
msg=MIMEMultipart()
html="""<p>Please finish registration <br/><img src="cid:image.jpg"></p>"""
img_file='image.jpg'
msgText = MIMEText(html,'html')
msgImg=MIMEImage(imgObj)
msgImg.add_header('Content-ID',img_file)
msg.attach(msgImg)
msg.attach(msgText)
Run Code Online (Sandbox Code Playgroud)

如果您查看第 4 行 - 我正在尝试读取图像,以便将其传递给 MIMEImage。显然,图像需要作为二进制读取。但是,我不知道如何将其转换为二进制以便 .read() 可以处理它。

FOLLOW-UP 我编辑从每建议jsbueno代码-非常感谢你!!!:

  emailed_password=os.urandom(16)
  image=Image.new("RGBA",(300,400),(255,255,255))
  image_base=ImageDraw.Draw(image)
  emailed_password_pic=image_base.text((150,200),emailed_password,(0,0,0))
  stream_bytes=BytesIO()
  image.save(stream_bytes,format='png')
  stream_bytes.seek(0)
  #in_memory_file=stream_bytes.getvalue()
  #imgObj=in_memory_file.read()
  imgObj=stream_bytes.read()
  msg=MIMEMultipart()
  sender='xxx@abc.com'
  receiver='jjjj@gmail.com'
  subject_header='Please use code provided in this e-mail to confirm your subscription.'
  msg["To"]=receiver
  msg["From"]=sender
  msg["Subject"]=subject_header
  html="""<p>Please finish registration by loging into your account and typing in code from this e-mail.<br/><img src="cid:image.png"></p>"""
  img_file='image.png'
  msgText=MIMEText(html,'html')
  msgImg=MIMEImage(imgObj) #Is mistake …
Run Code Online (Sandbox Code Playgroud)

python python-3.x pillow

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

Python ImportError:无法在virtualenv中导入名称"_imagingtk"

我想开始使用枕头,但我遇到了一些问题:
起初,我认为我可以简单pip install pillow,所以我激活了我的virtualenv并做到了这一点.当它不起作用时,我意识到我需要为枕头(安装)安装一些依赖项.我在Ubuntu 14.04上.但即使在我安装了这些依赖项并重新安装了枕头之后,代码也无效.直到我在virtualenv之外尝试并pip在我的主要Python3.4安装上安装了枕头,我的代码突然起作用.

import tkinter as tk
from PIL import Image, ImageTk


def show(img, text=""):
    root = tk.Tk()
    root.title(text)
    photo = ImageTk.PhotoImage(img)
    image_lbl = tk.Label(root, image=photo)
    image_lbl.image = photo
    image_lbl.pack()
    root.mainloop()


show(Image.open("test.jpg"), text="Test")
Run Code Online (Sandbox Code Playgroud)

错误:

Traceback (most recent call last):
  File "~/Code/Python/venvs/main/lib/python3.4/site-packages/PIL/ImageTk.py", line 176, in paste
    tk.call("PyImagingPhoto", self.__photo, block.id)
_tkinter.TclError: invalid command name "PyImagingPhoto"

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "~/Code/Python/main/test.py", line 15, in …
Run Code Online (Sandbox Code Playgroud)

python tkinter virtualenv pillow python-3.4

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

Python PIL图像比较问题

我试图使用PIL比较2个图像,下面是我的场景.

IMG1:

IMG1

IMG2:

IMG2

img1 = Image.open(img1.png)
img2 = Image.open(img2.png)
Run Code Online (Sandbox Code Playgroud)

我写了一个简单的diff函数,如果存在差异则返回-1,如果相同则返回0.

def diff(img1, img2):
    im1 = img1.load()
    im2 = img2.load()

    for i in range(0, img1.size[0]):
        for j in range(0, img1.size[1]):
            if(im1[i,j] != im2[i,j]):
                return -1
    return 0
Run Code Online (Sandbox Code Playgroud)

我通过以下内容:

diff(img2, img1.transpose(Image.FLIP_LEFT_RIGHT))
Run Code Online (Sandbox Code Playgroud)

两者都是完全相同的图像,但我有所不同.差异似乎在:[27 84]有人可以解释一下为什么?

python image-processing python-imaging-library pillow

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

Amazon S3 上的 Pillow Resizing 图像(缩略图) - Django

保存后,我尝试调整图像大小。具体来说,我的图像存储在 Amazon S3 上,然后我使用django-storagesboto3第三方应用程序

保存图像后,它会存储在我的 Amazon S3 存储桶中,其访问 url 如下所示:

https://s3-sa-east-1.amazonaws.com/ihost-project/media/studyoffer_images/algoritmos-para-ensenanza/15061122523583.jpg

保存和调整图像大小的代码是这样的:

class UploadStudyOffer(models.Model):
    study_offer = models.ForeignKey(StudiesOffert, related_name='uploadsstudyoffer')
    image = models.ImageField(upload_to=get_image_path)
    # images folder per object

    def save(self, *args, **kwargs):
        super(UploadStudyOffer, self).save(*args, **kwargs)
        # We first check to make sure an image exists
        if self.image:
            # Open image and check their size
            image = Image.open(self.image)
            i_width, i_height = image.size
            max_size = (100,100)

            # We resize the image if it's too large
            if i_width > 1000:
                image.thumbnail(max_size, …
Run Code Online (Sandbox Code Playgroud)

python django amazon-s3 pillow

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

在python中使用枕头覆盖原始图像

我正在尝试使用枕头编辑图像。我看到我们只有将编辑后的图像保存在新文件中的选项。

有没有办法在将编辑后的图像保存在枕头中时覆盖原始图像?想知道。

python pillow

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

当图像颜色为黑色时,如何使用 Pillow 将 PNG 转换为 JPEG?

我查看了以下链接以了解如何转换PNGJPG

转换按预期工作,但是当图像颜色本身不是黑色时!我有以下图片: 笔编辑

代码是:

im.convert('RGB').save('test.jpg', 'JPEG')
Run Code Online (Sandbox Code Playgroud)

它使整个画面变黑。我应该如何以正确的格式和颜色转换这个 PNG?颜色可以是从黑色到白色的任何颜色。

python png jpeg file-conversion pillow

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

用枕头在图像上羽化边缘

我试图弄清楚如何使用带Pillow和Python的图像边缘。

我需要像这样的可爱猫咪(忽略可见边缘):

在此处输入图片说明

我尝试过,im.filter(ImageFilter.BLUR)但不是我要找的东西。

image pillow python-3.6

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

matplotlib中的低对比度图像(对比度拉伸)问题

阅读低对比度图像时,它会自动采用以下示例:

In [1]: from PIL import Image
In [2]: import numpy as np
In [3]: import matplotlib.pyplot as plt
In [4]: img = Image.open('images/map.jpg')
In [5]: arr = np.asarray(img)
In [6]: plt.gray()
In [7]: plt.imshow(arr)
Out[7]: <matplotlib.image.AxesImage at 0x7f9c7e88f490>
In [8]: plt.show()
Run Code Online (Sandbox Code Playgroud)

输入

输入

情节(没有改变,这是matplotlib自动.)

情节

因为这个输入不同于情节,没有修改任何东西.

我需要低对比度图像来实现对比拉伸的算法

阅读亚马逊数字图像处理书(Rafael C. Gonzalez,Richard E. Woods)

PS:matplotlib正在转换自动.我不需要.

python matplotlib pillow

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