我正在寻找一个命令,它将使用PIL在现有图像上绘制一个圆圈.
im = Image.open(path)
Run Code Online (Sandbox Code Playgroud)
我想要一个能绘制半径r和中心的彩色圆圈的功能(x,y)
这可能是一个愚蠢的问题,但......
我有几千个图像,我想加载到Python然后转换为numpy数组.显然这有点慢.但是,我实际上只对每张图片的一小部分感兴趣.(相同的部分,图像中心只有100x100像素.)
有没有办法加载图像的一部分,以使事情变得更快?
下面是一些示例代码,我生成一些示例图像,保存并重新加载.
import numpy as np
import matplotlib.pyplot as plt
import Image, time
#Generate sample images
num_images = 5
for i in range(0,num_images):
Z = np.random.rand(2000,2000)
print 'saving %i'%i
plt.imsave('%03i.png'%i,Z)
%load the images
for i in range(0,num_images):
t = time.time()
im = Image.open('%03i.png'%i)
w,h = im.size
imc = im.crop((w-50,h-50,w+50,h+50))
print 'Time to open: %.4f seconds'%(time.time()-t)
#convert them to numpy arrays
data = np.array(imc)
Run Code Online (Sandbox Code Playgroud) 如何用PIL绘制粗体/斜体文字?ImageFont.truetype(文件,大小)有一个选项来指定字体大小.
我有几个图像,我想用Python向用户显示.用户应输入一些描述,然后显示下一个图像.
这是我的代码:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os, glob
from PIL import Image
path = '/home/moose/my/path/'
for infile in glob.glob( os.path.join(path, '*.png') ):
im = Image.open(infile)
im.show()
value = raw_input("Description: ")
# store and do some other stuff. Now the image-window should get closed
Run Code Online (Sandbox Code Playgroud)
它正在工作,但用户必须自己关闭图像.在输入描述后,我可以让python关闭图像吗?
我不需要PIL.如果你对另一个库/ bash程序(使用子进程)有另一个想法,那也没关系.
如何使用python在图像上绘制具有不同笔触和填充颜色的文本?
这是一些红色笔触和灰色填充的文本.

我尝试使用PIL执行此操作,但没有设置笔触颜色的选项.
我正在玩PIL并遇到了这个问题,我无法看到文档在哪里我出错了.这是我的简单代码
from PIL import Image
from PIL.ImageChops import difference
imageA = Image.open("image1.png")
imageB = Image.open("image2.png")
if imageA.size == imageB.size:
diff = difference(imageA, imageB)
diff.save("test.png")
Run Code Online (Sandbox Code Playgroud)
这给了我错误
Traceback (most recent call last):
File "C:\[XXX]\box-test.py", line 8, in <module>
diff = difference(imageA, imageB)
File "C:\Python32\lib\site-packages\PIL\ImageChops.py", line 123, in difference
return image1._new(image1.im.chop_difference(image2.im))
ValueError: images do not match
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激
我一直试图使用PIL模糊图像.
据我所知,我需要复制图像,然后从原始图片中将每个像素更改为周围像素的平均值.所以我没有走得太远,我正在使用python 3.3x
from PIL import Image
img = Image.open("source")
im = Image.copy(img)
Run Code Online (Sandbox Code Playgroud)
我知道如何使用putpixe,并获取像素的数据,但我无法弄清楚如何获得周围像素的平均值.
在此先感谢您的帮助!
这是我的forms.py:
class UploadImageForm(forms.ModelForm):
class Meta:
model = UserImages
fields = ['photo']
Run Code Online (Sandbox Code Playgroud)
这是我的models.py:
class UserImages(models.Model):
user = models.ForeignKey(User)
photo = models.ImageField(upload_to=get_file_path)
Run Code Online (Sandbox Code Playgroud)
这是我的看法:
def uploadImageView(request):
if request.method == 'POST':
form = UploadImageForm(request.POST, request.FILES)
if form.is_valid():
instance = form.save(commit=False)
instance.user = request.user
instance.save()
return redirect('/')
else:
form = UploadImageForm()
return render(request, 'uploadImagePage.html', {'uploadImageForm': form})
Run Code Online (Sandbox Code Playgroud)
但这只会保存正在上传的图像.如何保存图像的缩略图版本以及具有完全相同名称的图像的缩略图版本,除了后面带有"thumbail"字样?
我读过的教程说我可以做
im = Image.open(infile)
im.thumbnail(size, Image.ANTIALIAS)
Run Code Online (Sandbox Code Playgroud)
获取缩略图但在我的情况下,图像甚至还没有保存.
我是一名电影摄影师,他经常裁剪裁剪/调整图像.因为我拍摄胶片,我必须扫描我的底片,并从批量扫描中裁剪出每一帧.我的扫描仪扫描四条带,每条六张图像(每次扫描24帧/作物).
我的一个朋友给我写了一个Python脚本,它根据输入的坐标自动裁剪图像.该脚本运行良好但在导出图像的文件格式中存在问题.
从扫描开始,每帧应该在240 DPI时产生37mb TIFF(当我在Adobe Lightroom中裁剪和导出时).相反,Cropper输出一个13mb 72 DPI TIFF.
当我运行Cropper时,终端(我在Mac上)警告我"减压炸弹".我的朋友很难过,建议我问Stack Overflow.
我没有Python经验.我可以提供他编写的代码和终端给我的命令.
思考?这将是非常感激和巨大的节省时间.谢谢!
ERROR MESSAGE: /Library/Python/2.7/site-packages/PIL/Image.py:2192: DecompressionBombWarning: Image size (208560540 pixels) exceeds limit of 89478485 pixels, could be decompression bomb DOS attack.
Run Code Online (Sandbox Code Playgroud) 我正在尝试从s3中提取图像,量化它/操纵它,然后将其存储回s3而不将任何内容保存到磁盘(完全在内存中).我曾经做过一次,但是在返回代码并再次尝试它之后就没用了.代码如下:
import boto3
import io
from PIL import Image
client = boto3.client('s3',aws_access_key_id='',
aws_secret_access_key='')
cur_image = client.get_object(Bucket='mybucket',Key='2016-03-19 19.15.40.jpg')['Body'].read()
loaded_image = Image.open(io.BytesIO(cur_image))
quantized_image = loaded_image.quantize(colors=50)
saved_quantized_image = io.BytesIO()
quantized_image.save(saved_quantized_image,'PNG')
client.put_object(ACL='public-read',Body=saved_quantized_image,Key='testimage.png',Bucket='mybucket')
Run Code Online (Sandbox Code Playgroud)
我收到的错误是:
botocore.exceptions.ClientError: An error occurred (BadDigest) when calling the PutObject operation: The Content-MD5 you specified did not match what we received.
Run Code Online (Sandbox Code Playgroud)
如果我只是拉一个图像然后把它放回去而不操纵它,它工作正常.我不太确定这里发生了什么.