我是烧瓶新手。我想在flask中使用PIL模块。但是,在编写代码后,当我尝试启动服务器时,出现错误ImportError: No module named PIL。这里有什么问题吗?
在 Pillow 中,我们可以使用滤镜模糊图像:
模糊图像 = 原始图像.filter(ImageFilter.BLUR)
但这并不是真正的镜头效果。是否可以使用一些自定义过滤器?有什么例子吗?
(第 2 号是我需要的。第 3 号是枕头式模糊滤镜。)
python algorithm image-processing python-imaging-library imagefilter
Python:3.4.3
Django:1.9.7
异常类型:TypeError
异常值:“_io._IOBase”对象的描述符“fileno”需要参数
异常位置:/usr/lib/python3/dist-packages/PIL/ImageFile.py在 _save,第 454 行
这是我在终端中测试过的代码 -
import urllib.request
from PIL import Image
from io import BytesIO
url = 'http://s.inyourpocket.com/gallery/108367.jpg'
i = Image.open(BytesIO(urllib.request.urlopen(url).read()))
img_file = BytesIO()
i.save(img_file, 'JPEG')
Run Code Online (Sandbox Code Playgroud)
该代码在终端中运行得很好,但是一旦在 Django 服务器上进行测试,它就会给我这些错误 -
File "PATH/utils.py", line 124, in pil_to_django
image.save(img_file, 'JPEG')
File "/usr/lib/python3/dist-packages/PIL/Image.py", line 1468, in save
save_handler(self, fp, filename)
File "/usr/lib/python3/dist-packages/PIL/JpegImagePlugin.py", line 579, in _save
ImageFile._save(im, fp, [("jpeg", (0,0)+im.size, 0, rawmode)], bufsize)
File "/usr/lib/python3/dist-packages/PIL/ImageFile.py", line 454, in _save
fh = fp.fileno()
TypeError: descriptor 'fileno' of '_io._IOBase' object …Run Code Online (Sandbox Code Playgroud) 如何使用 Pillow 从 PNG 中导出 alpha 蒙版?
理想情况下,结果将是代表 Alpha 通道的灰度图像。
我正在尝试创建一个图像并用半透明的黑色填充它:
from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw
from PIL import ImageEnhance
fnt = create_font()
# my background rectangle
img1 = Image.new("RGBA", 100, 100, color=(0, 0, 0, 230)) #RGBA
dr1 = ImageDraw.Draw(img1)
dr1.text((5, 5), "some text", font=fnt)
# my source image
my_img.paste(dr1, (10, 10))
my_img.save(out_file, "JPEG")
Run Code Online (Sandbox Code Playgroud)
但它忽略了透明度级别“230”。如果我将其更改为“0”或任何其他数字,“dr1”矩形的透明度级别保持不变 - 它是全黑的。
更新:
我有 jpeg 来源my_img。我想在其带有文本的部分放置一个半透明矩形img1。我怎样才能做到这一点?我怎样才能变得img1更加透明?
我有一个包含n灰度 48*48 图像的文件夹。
我想分开提取每个图像的像素值并将其保存在单独的文本文件中(我将有n文本文件)。
我已经尝试过这个:
from PIL import Image
import numpy as np
im = Image.open('a.png')
pixels = list(im.getdata())
width, height = im.size
pixels = [pixels[i * width:(i + 1) * width] for i in xrange(height)]
np.savetxt("pixel_data.txt", pixels, delimiter=" ")
Run Code Online (Sandbox Code Playgroud)
但我得到这样的值:1.460000000000000000e+02 1.500000000000000000e+02 1.520000000000000000e+02。
我希望每个文本文件有 48 列 x 48 行,像素值在 0-255 之间。
示例图片:

我怎样才能用Python做到这一点?
如何使用 python3 Pillow 清除区域ImageDraw?
im = Image.new('RGBA', (1200, 400), (0, 0, 0, 0))
draw = ImageDraw.Draw(im)
...
draw.rectangle((100, 100, 300, 150), fill=(0, 0, 0, 0))
draw.text((100, 100), 'Hello World!', font=font, fill=(0, 0, 255, 255))
canvas.write(im.tobytes())
Run Code Online (Sandbox Code Playgroud)
我的想法是绘制一个矩形,但由于组件为 ,fill=(0, 0, 0, 0)因此该矩形会混合到图像中而不会改变任何像素。alpha0
我每秒更新图像 60 次,但我无法重绘整个图像。
我需要保存由 numpy 数组制成的透明图像。我可以使用以下命令保存图像:
img = Image.fromarray(data, 'RGB')
Run Code Online (Sandbox Code Playgroud)
但我需要它是透明的,所以我尝试用以下方法保存它:
img = Image.fromarray(data, 'RGBA')
Run Code Online (Sandbox Code Playgroud)
然后我得到这个错误:
File "/home/pi/Documents/Projet/GetPos.py", line 51, in click
img = Image.fromarray(data, 'RGBA')
File "/usr/lib/python2.7/dist-packages/PIL/Image.py", line 2217, in
fromarray
return frombuffer(mode, size, obj, "raw", rawmode, 0, 1)
File "/usr/lib/python2.7/dist-packages/PIL/Image.py", line 2162, in
frombuffer
core.map_buffer(data, size, decoder_name, None, 0, args)
ValueError: buffer is not large enough
Run Code Online (Sandbox Code Playgroud)
我做了一些研究,但对于我想做的简单事情来说,一切看起来都非常复杂......有人可以帮助我吗?
这是我的完整代码(我对 python 还很陌生:)):
mouse = pymouse.PyMouse()
posX, posY = mouse.position()
print(mouse.position())
w, h = 1920, 1080
data = np.zeros((h, w, 3), dtype=np.uint8)
for x …Run Code Online (Sandbox Code Playgroud) 我制作了一个绘画程序,但我无法顺利绘制并且每次都用不同的名称保存图像。请帮忙!
from tkinter import *
# by Canvas I can't save image, so i use PIL
import PIL
from PIL import Image, ImageDraw
def save():
filename = 'image.png'
image1.save(filename)
def paint(event):
x1, y1 = (event.x), (event.y)
x2, y2 = (event.x + 1), (event.y + 1)
cv.create_oval((x1, y1, x2, y2), fill='black', width=10)
# --- PIL
draw.line((x1, y1, x2, y2), fill='black', width=10)
root = Tk()
cv = Canvas(root, width=640, height=480, bg='white')
# --- PIL
image1 = PIL.Image.new('RGB', (640, 480), 'white')
draw = …Run Code Online (Sandbox Code Playgroud) tkinter paint python-imaging-library python-3.x tkinter-canvas
我正在制作一个简单的应用程序,能够使用 Pillow 库、python3 和 Django 压缩 jpeg 和 png 格式的图像。做了一个简单的视图,能够识别格式,保存压缩图像并给出一些压缩统计数据。对于 jpeg 格式的图像,它工作得非常好,我得到的压缩图标接近原始大小的 70-80%,并且工作得非常快,但如果我上传 png,我的工作效果会更糟。压缩时间较长,且只有原始大小的3-5%。试图找到一些升级压缩脚本的方法,并坚持下去。
\n\n现在我在 Django 压缩视图中得到了这个脚本:
\n\nfrom django.shortcuts import render, redirect, get_object_or_404, reverse\nfrom django.contrib.auth import login, authenticate, logout\nfrom django.contrib.auth.models import User\nfrom django.http import HttpResponse, HttpResponseRedirect\nfrom django.http import JsonResponse\nfrom django.contrib import auth\nfrom .forms import InputForm, SignUpForm, LoginForm, FTPForm\nimport os\nimport sys\nfrom PIL import Image\nfrom .models import image, imagenew, FTPinput\nfrom django.views import View\nimport datetime\nfrom django.utils import timezone\nimport piexif\n\n\nclass BasicUploadView(View):\n def get(self, request):\n return render(self.request, \'main/index.html\', {})\n\n def post(self, request):\n form …Run Code Online (Sandbox Code Playgroud) python ×7
python-3.x ×5
django ×2
algorithm ×1
buffer ×1
flask ×1
imagefilter ×1
paint ×1
rgba ×1
tkinter ×1