标签: python-imaging-library

PIL图像对象上的Python副本

我正在尝试创建一组缩略图,每个缩略图都与原始图像分开缩小.

image = Image.open(path)
image = image.crop((left, upper, right, lower))
for size in sizes:
  temp = copy.copy(image)
  temp.thumbnail((size, height), Image.ANTIALIAS)
  temp.save('%s%s%s.%s' % (path, name, size, format), quality=95)
Run Code Online (Sandbox Code Playgroud)

上面的代码似乎工作正常,但在测试时我发现一些图像(我不知道它们有什么特别之处,可能仅针对PNG)引发了这个错误:

/usr/local/lib/python2.6/site-packages/PIL/PngImagePlugin.py in read(self=<PIL.PngImagePlugin.PngStream instance>)
line: s = self.fp.read(8)
<type 'exceptions.AttributeError'>: 'NoneType' object has no attribute 'read' 
Run Code Online (Sandbox Code Playgroud)

没有copy()这些图像工作就好了.

我可以为每个缩略图重新打开并裁剪图像,但我宁愿有更好的解决方案.

python copy python-imaging-library

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

TypeError:图像数据无法转换为float

我想创建一个16位图像.所以我写了一个代码.

     import skimage 
     import random
     from random import randint                        
     xrow=raw_input("Enter the number of rows to be present in image.=>")
     row=int(xrow)
     ycolumn=raw_input("Enter the number of columns to be present in image.=>")
     column=int(ycolumn)

       A={}
       for x in xrange(1,row):
           for y in xrange(1,column):
               a=randint(0,65535)
               A[x,y]=a 

       imshow(A)
Run Code Online (Sandbox Code Playgroud)

但每当我运行此代码时,我得到一个错误显示"TypeError:图像数据无法转换为浮动".是否有任何解决方案.

我为我的写作中的错误道歉,因为这是我上面提到的第一个问题.

python image image-processing python-imaging-library

22
推荐指数
6
解决办法
10万
查看次数

将opencv图像格式转换为PIL图像格式?

我想转换加载的图像

TestPicture = cv2.imread("flowers.jpg")
Run Code Online (Sandbox Code Playgroud)

我想在示例https://wellfire.co/learn/python-image-enhancements上运行PIL过滤器(http://pillow.readthedocs.io/en/4.0.x/reference/ImageFilter.html)/与变量

TestPicture
Run Code Online (Sandbox Code Playgroud)

但是我无法将其转换回来并且在这些类型之间排在第四位.

有没有办法做这个转换?

opencv可以执行PIL包中的所有图像过滤器吗?

python opencv image-processing type-conversion python-imaging-library

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

如何使用PIL调整大小并将旋转EXIF信息应用于文件?

我正在尝试使用Python来调整图片大小.使用我的相机,文件都是以横向方式编写的.

exif信息处理标签以要求图像查看器以某种方式旋转.由于大多数浏览器都不理解这些信息,因此我想使用此EXIF信息旋转图像并保留所有其他EXIF信息.

你知道我怎么能用Python做到这一点吗?

阅读EXIF.py源代码,我发现了类似的东西:

0x0112: ('Orientation',
         {1: 'Horizontal (normal)',
          2: 'Mirrored horizontal',
          3: 'Rotated 180',
          4: 'Mirrored vertical',
          5: 'Mirrored horizontal then rotated 90 CCW',
          6: 'Rotated 90 CW',
          7: 'Mirrored horizontal then rotated 90 CW',
          8: 'Rotated 90 CCW'})
Run Code Online (Sandbox Code Playgroud)

我如何使用此信息和PIL来应用它?

python jpeg exif rotation python-imaging-library

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

在django admin中验证图像大小

我看到很多有Django应用程序的图片上传人员在上传后会自动调整图片大小.对某些情况来说这很好,但我不想这样做.相反,我只是想强制用户上传已经适当大小的文件.

我想要一个ImageField,我强制用户上传100x200的图像.如果他们上传的图片不是那么大,我希望管理表单返回无效.我也希望能够为宽高比做同样的事情.我想强制用户上传16:9的图像并拒绝任何不符合的上传.

我已经知道如何获取图像的宽度和高度,但是在图像上传之后我才能做到服务器端,并且表单已成功提交.如果可能,我如何提前检查?

python django image django-forms python-imaging-library

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

如何使用PIL获取PNG图像的alpha值?

如何使用PIL检测PNG图像是否具有透明的alpha通道?

img = Image.open('example.png', 'r')
has_alpha = img.mode == 'RGBA'
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,我们知道PNG图像是否具有alpha通道,但是如何获得alpha值?

我没有在PIL网站上描述的img.info字典中找到"透明度"键

我正在使用Ubuntu和zlib1g,已经安装了zlibc软件包.

python png image transparent python-imaging-library

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

如何用PIL(python-imaging)创建透明的gif(或png)

试图用PIL 创建一个透明的gif.到目前为止我有这个:

    from PIL import Image

    img = Image.new('RGBA', (100, 100), (255, 0, 0, 0))
    img.save("test.gif", "GIF", transparency=0)
Run Code Online (Sandbox Code Playgroud)

到目前为止,我发现的一切都是指操纵现有图像来调整透明度设置或将透明图像叠加到另一个上.我只想创建一个透明的GIF(然后绘制).

python transparency imaging gif python-imaging-library

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

PIL图像到数组(numpy数组到数组) - Python

我有一个.jpg图像,我想转换为Python数组,因为我实现了处理普通Python数组的处理例程.

似乎PIL图像支持转换为numpy数组,并且根据我写的文档:

from PIL import Image
im = Image.open("D:\Prototype\Bikesgray.jpg")
im.show()

print(list(np.asarray(im)))
Run Code Online (Sandbox Code Playgroud)

这将返回一个numpy数组列表.另外,我试过了

list([list(x) for x in np.asarray(im)])
Run Code Online (Sandbox Code Playgroud)

由于它失败了,它什么都没有返回.

如何从PIL转换为数组,或者简单地从numpy数组转换为Python数组?

python arrays numpy image python-imaging-library

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

从PIL图像或StringIO将图像插入到Reportlab中

我正在尝试将条形码图像插入到Reportlab中.我知道有很多问题要问这个,但是他们都认为你已经在目录或文件系统中有了图像文件.

由于Reportlab存在EAN13条形码问题,我决定使用另一个名为pyBarcode的包来为我生成图像.

最初我将图像保存在StringIO实例中并直接传递给它,reportlab.platypus.flowables.Image但似乎没有用.然后我阅读了文档:

支持PIL/Java 1.4(Python/Java Imaging Library)支持的格式.

这是否意味着如果我传递PIL图像,这应该有用吗?我尝试以下操作时遇到异常:

>>> import PIL
>>> from reportlab.platypus.flowables import Image
>>> fp = StringIO(the_barcode.getvalue())
>>> barcode_image = PIL.Image.open(fp)
>>> doc = SimpleDocTemplate('barcode.pdf')
>>> story = [Image(barcode_image)]
>>> Traceback (most recent call last):
  File "create.py", line 57, in <module>
    main()
  File "create.py", line 24, in main
    save_pdf(fp, STYLE, ART, COLOR, SIZE)
  File "create.py", line 28, in save_pdf
    fp = StringIO(fp.getvalue())
  File "/home/mark/.virtualenvs/barcode/local/lib/python2.7/site-packages/reportlab-2.6-py2.7-linux-i686.egg/reportlab/platypus/flowables.py", line 402, in __init__
    if not fp and os.path.splitext(filename)[1] …
Run Code Online (Sandbox Code Playgroud)

python reportlab python-imaging-library

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

将矩形图像调整为正方形,保持比例并用黑色填充背景

我正在尝试调整一组256 x N像素的灰度图像(N变化,但始终≤256).

我的目的是缩小图像尺寸.

调整大小必须输出方形(1:1)图像,其中:

  • 调整后的图像垂直居中
  • 纵横比保持不变
  • 剩余像素呈现黑色

在视觉上这将是期望的结果:

在此输入图像描述

我尝试使用目标大小(例如200 x 200)创建一个numpy零点矩阵,但无法将调整大小的图像粘贴到其垂直中心.

任何使用cv2,PIL或numpy的建议都是受欢迎的.

python opencv numpy image-processing python-imaging-library

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