我正在尝试将 anarray转换为图像(tif)进行压缩(它将在另一端撤消)。然而,我在第一个障碍上摔倒了......
我有以下几点:
pillow_image = Image.fromarray(image_data)
Run Code Online (Sandbox Code Playgroud)
这给了我这个错误:
Run Code Online (Sandbox Code Playgroud)File "/Users/workspace/test-app/env/lib/python2.7/site-packages/PIL/Image.py",第 2155 行,在 fromarray arr = obj 中。array_interface AttributeError: 'tuple' 对象没有属性 ' array_interface '
我在这里做错了什么?
我有一个用 Python 编写的脚本。作者决定使用仅在 Python 3 中可用的新功能,因此我不得不更新我的版本。
现在我遇到了麻烦,因为脚本在导入语句上崩溃,所以我决定进行一些调试。我得出的结论是,我的 Python 3 无法Image从PIL.
在 Python 2 中:
Python 2.7.10 (default, Aug 22 2015, 20:33:39)
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from PIL import Image
Run Code Online (Sandbox Code Playgroud)
不会给出错误,但在 Python 3 中:
Python 3.5.0 (v3.5.0:374f501f4567, Sep 12 2015, 11:00:19)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from …Run Code Online (Sandbox Code Playgroud) 现在我正在尝试调整一些 .jpg 文件的大小,我的脚本如下:
from PIL import Image
def main( ): #{
filename = "amonstercallsmoviestill.jpg"
image = Image.open(filename)
size = width, height = image.size
image.thumbnail((1600,900))
image.show()
del image
#}
if (__name__ == "__main__" ): #{
main()
#}
Run Code Online (Sandbox Code Playgroud)
我正在尝试将 amonstercallsmoviestill.jpg 的大小调整为 (1600,900),但它似乎不起作用。
我已经尝试过 (300,300) 并且它们可以工作,但是每当尝试使用 (1600,900) 进行缩略图时,它似乎都不起作用。
谢谢!
我正在尝试下面我编写的代码,但它抛出了一个错误。我不确定我做错了什么。任何帮助表示赞赏
def upload_img(request):
maxsize = (1024, 1024)
im = Image.open(request.FILES['image'])
im.thumbnail(maxsize)
img_name = 'test.jpg'
s3 = boto3.client('s3')
s3.put_object(
Bucket=settings.AWS_S3_DEV_IMG_BUCKET,
Key=img_name,
Body=im.save(img_name, "JPEG"),
ContentType='image/jpeg',
)
Run Code Online (Sandbox Code Playgroud)
错误:
'ParamValidationError: Parameter validation failed:
Invalid type for parameter Body, value: None, type: <type 'NoneType'>, valid types: <type 'str'>, <type 'bytearray'>, file-like object
Run Code Online (Sandbox Code Playgroud) 我正在尝试遍历一些像素并使用进行编辑PixelAccess。由于某些原因,当我尝试设置像素时,Python给了我TypeError: function takes exactly 1 argument (4 given)
pixels[(x, y)] = pix
Run Code Online (Sandbox Code Playgroud)
是确切的代码。
Traceback (most recent call last):
File "./gen_shuttletiles.py", line 86, in <module>
main()
File "./gen_shuttletiles.py", line 76, in main
pixels[(x, y)] = pix
TypeError: function takes exactly 1 argument (4 given)
Run Code Online (Sandbox Code Playgroud)
pix是图像的RGBA值的4元数字。我试图通过添加一些零来更改元组中项目的数量,并且错误中给出的计数确实增加了。
在下面的代码片段中,传递 x 和 y 值会将点放在 (y,x) 坐标中,而绘图是在 (x,y) 中完成的。设置绘图缓冲区以便在同一坐标系中放置像素和绘图的正确方法是什么?
from PIL import Image, ImageDraw
def visual_test(x, y):
grid = np.zeros((100, 100, 3), dtype=np.uint8)
grid[:] = [0, 0, 0]
grid[x, y] = [255, 0, 0]
img = Image.fromarray(grid, 'RGB')
draw = ImageDraw.Draw(img)
draw.line((x, y, x, y-5), fill=(255,255,255), width=1)
img.show()
Run Code Online (Sandbox Code Playgroud) 我正在为色度键(绿色屏幕)编写脚本,并使用Python和PIL(枕头)合成一些视频.我可以键入720p图像,但还有一些留在绿色溢出.可以理解,但我正在编写一个例行程序,以消除泄漏......但是我正在努力解决这个问题需要多长时间.我可以使用numpy技巧获得更好的速度,但我并不熟悉它.有任何想法吗?
这是我的鄙视程序.它需要一个PIL图像和一个敏感数字,但到目前为止我已经离开了它...它一直运作良好.我正以超过4秒的速度进入一个720p的框架,以消除这种溢出.为了比较,色度键例程每帧运行大约2秒.
def despill(img, sensitivity=1):
"""
Blue limits green.
"""
start = time.time()
print '\t[*] Starting despill'
width, height = img.size
num_channels = len(img.getbands())
out = Image.new("RGBA", img.size, color=0)
for j in range(height):
for i in range(width):
#r,g,b,a = data[j,i]
r,g,b,a = img.getpixel((i,j))
if g > (b*sensitivity):
out_g = (b*sensitivity)
else:
out_g = g
# end if
out.putpixel((i,j), (r,out_g,b,a))
# end for
# end for
out.show()
print '\t[+] done.'
print '\t[!] Took: %0.1f seconds' % (time.time()-start)
exit()
return out
# …Run Code Online (Sandbox Code Playgroud) 用户通过表单上传图像文件,我不想将原始上传的图像文件保存到磁盘,并通过Pillow从磁盘打开图像来调整图像大小.
我想首先在内存中调整此映像文件的大小,然后将调整大小的映像文件保存到磁盘.所以我导入StringIO作为缓冲区,但它不适用于Pillow.
这是代码:
Python3.4,Flask == 0.10.1,Pillow == 3.4.2
class Form():
img = FileField()
submit = SubmitField()
Run Code Online (Sandbox Code Playgroud)
from io import StringIO
from PIL import Image
from .forms import Form
@app.route('/upload_img', methods=['GET', 'POST'])
def upload_img():
form = Form()
im = Image.open(StringIO(form.img.data.read())
pass
Run Code Online (Sandbox Code Playgroud)
TypeError:initial_value必须是str或None,而不是字节
Matplotlib imshow很好地绘制了一个numpy数组。最好用以下代码说明:
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
rows, cols = 200, 200
mat = np.zeros ((rows, cols))
for r in range(rows):
for c in range(cols):
mat[r, c] = r * c
# Handle with matplotlib
plt.imshow(mat)
Run Code Online (Sandbox Code Playgroud)
它创建的图:
,这是我想要的。我想要的是没有轴的图像,因此通过谷歌搜索,我能够组装此功能:
def create_img (image, w, h):
fig = plt.figure(figsize=(w, h), frameon=False)
canvas = FigureCanvas(fig)
#To make the content fill the whole figure
ax = plt.Axes(fig, [0., 0., 1., 1.])
ax.set_axis_off()
fig.add_axes(ax)
plt.grid(False)
ax.imshow(image, aspect='auto', cmap='viridis') …Run Code Online (Sandbox Code Playgroud) 我需要用白色替换png图像的透明层。我试过了
from PIL import Image
image = Image.open('test.png')
new_image = image.convert('RGB', colors=255)
new_image.save('test.jpg', quality=75)
Run Code Online (Sandbox Code Playgroud)
但透明层变成黑色。有人可以帮助我吗?
pillow ×10
python ×9
numpy ×3
image ×2
amazon-s3 ×1
arrays ×1
chromakey ×1
django ×1
flask ×1
matplotlib ×1
python-2.7 ×1
python-3.5 ×1
python-3.x ×1
stringio ×1