我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python-PIL模块画图

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python-PIL模块画图

python中执行mysql遇到like 怎么办 ?

​sql = "SELECT * FROM T_ARTICLE WHERE title LIKE '%%%%%s%%%%'" % searchStr

执行成功,print出SQL语句之后为:

SELECT * FROM T_ARTICLE WHERE title LIKE '%%生活%%'

原因:
Python在执行sql语句的时候,同样也会有%格式化的问题,仍然需要使用%%来代替%。因此要保证在执行sql语句的时候格式化正确。而不只是在sql语句(字符串)的时候正确。

import Image, ImageDraw, ImageFont, ImageFilter

import random

def rndChar():
return chr(random.randint(65, 90))

def rndColor():
return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))

def rndColor2():
return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))

width = 60 * 4
height = 60
image = Image.new('RGB', (width, height), (255,255,255))

font = ImageFont.truetype('/usr/share/fonts-droid/truetype/DroidSansFallback.ttf', 36)

draw = ImageDraw.Draw(image)

for x in range(width):
for y in range(height):
draw.point((x, y),fill=rndColor())

for t in range(4):
draw.text((60 * t +10, 10), rndChar(), font=font, fill=rndColor2())

image = image.filter(ImageFilter.BLUR)

image.save('/home/godben/code.jpg', 'jpeg')

#!/usr/bin/env python
#coding=utf-8
import random
from PIL import Image, ImageDraw, ImageFont, ImageFilter

_letter_cases = "abcdefghjkmnpqrstuvwxy" # 小写字母,去除可能干扰的i,l,o,z
_upper_cases = _letter_cases.upper() # 大写字母
_numbers = ''.join(map(str, range(3, 10))) # 数字

init_chars = ''.join((_letter_cases, _upper_cases, _numbers))

def create_validate_code(size=(120, 30),
chars=init_chars,
img_type="GIF",
mode="RGB",
bg_color=(255, 255, 255),
fg_color=(0, 0, 255),
font_size=18,
font_type="kk.TTF",
length=4,
draw_lines=True,
n_line=(1, 2),
draw_points=True,
point_chance = 2):
'''
@todo: 生成验证码图片
@param size: 图片的大小,格式(宽,高),默认为(120, 30)
@param chars: 允许的字符集合,格式字符串
@param img_type: 图片保存的格式,默认为GIF,可选的为GIF,JPEG,TIFF,PNG
@param mode: 图片模式,默认为RGB
@param bg_color: 背景颜色,默认为白色
@param fg_color: 前景色,验证码字符颜色,默认为蓝色#0000FF
@param font_size: 验证码字体大小
@param font_type: 验证码字体,默认为 ae_AlArabiya.ttf
@param length: 验证码字符个数
@param draw_lines: 是否划干扰线
@param n_lines: 干扰线的条数范围,格式元组,默认为(1, 2),只有draw_lines为True时有效
@param draw_points: 是否画干扰点
@param point_chance: 干扰点出现的概率,大小范围[0, 100]
@return: [0]: PIL Image实例
@return: [1]: 验证码图片中的字符串
'''
width, height = size # 宽, 高
img = Image.new(mode, size, bg_color) # 创建图形
draw = ImageDraw.Draw(img) # 创建画笔

def get_chars():
    '''生成给定长度的字符串,返回列表格式'''
    return random.sample(chars, length)

def create_lines():
    '''绘制干扰线'''
    line_num = random.randint(*n_line) # 干扰线条数
    for i in range(line_num):
        # 起始点
        begin = (random.randint(0, size[0]), random.randint(0, size[1]))
        #结束点
        end = (random.randint(0, size[0]), random.randint(0, size[1]))
        draw.line([begin, end], fill=(0, 0, 0))

def create_points():
    '''绘制干扰点'''
    chance = min(100, max(0, int(point_chance))) # 大小限制在[0, 100]

    for w in xrange(width):
        for h in xrange(height):
            tmp = random.randint(0, 100)
            if tmp > 100 - chance:
                draw.point((w, h), fill=(0, 0, 0))

def create_strs():
    '''绘制验证码字符'''
    c_chars = get_chars()
    strs = ' %s ' % ' '.join(c_chars) # 每个字符前后以空格隔开

    font = ImageFont.truetype(font_type, font_size)
    font_width, font_height = font.getsize(strs)
    draw.text(((width - font_width) / 3, (height - font_height) / 3),
                strs, font=font, fill=fg_color)

    return ''.join(c_chars)
if draw_lines:
    create_lines()
if draw_points:
    create_points()
strs = create_strs()
# 图形扭曲参数
params = [1 - float(random.randint(1, 2)) / 100,
          0,
          0,
          0,
          1 - float(random.randint(1, 10)) / 100,
          float(random.randint(1, 2)) / 500,
          0.001,
          float(random.randint(1, 2)) / 500
          ]


img = img.transform(size, Image.PERSPECTIVE, params) # 创建扭曲
img = img.filter(ImageFilter.EDGE_ENHANCE_MORE) # 滤镜,边界加强(阈值更大)

return img, strs

if name == "main":
code_img = create_validate_code()
code_img[0].save("xiaorui.cc.gif", "GIF")

#coding:utf-8
#编写验证码
#随机的数值
#图片
import random #python随机模块
from PIL import Image #图片
from PIL import ImageDraw #画笔
from PIL import ImageFont #字体
from PIL import ImageFilter #滤镜 验证码扭曲

#验证码编写步骤

#1、定义随机数
sample_text = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
sample_list = random.sample(sample_text,4)
randomText = "".join(sample_list)

#2、定义图片
img = Image.new("RGB",(150,50),(255,255,255))
#第一个参数是配色方案
#第二个参数是图片的尺寸px 宽高
#第三个参数是颜色 255,255,255是白色

#3、图片上绘制干扰项

#实例化画笔
draw = ImageDraw.Draw(img)
#绘制干扰线
for i in range(random.randint(10,20)): #随机循环1-10次

draw.line(
    #两个点决定一条线
    #每个点有x,y两个值
    [
        (
            random.randint(1,150), # x
            random.randint(1,150), # y
        ),#点一

        (
            random.randint(1,150),  # x
            random.randint(1,150),  # y
        )#点二

    ],#一条线

    fill = (random.randint(0,255),random.randint(0,255),random.randint(0,255)) #线条颜色

) #绘制线条

#绘制点

for j in range(1000):
draw.point(
​ [ random.randint(1, 150), # x
random.randint(1, 150), # y
],#一个点
fill=(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)) # 线条颜色

)

#4、书写文字
#定义字体

text = "".join(randomText)

font = ImageFont.truetype("simsun.ttc",36) #定义字体

draw.text((random.randint(1, 10),random.randint(1, 5)),text,font = font,fill = "green") #书写文字

#文字起始位置
#文字内容
#文字字体
#文字颜色

#5、进行滤镜扭曲
#定义扭曲的参数

params = [
1-float(random.randint(1,2))/100,
0,
0,
0,
1 - float(random.randint(1, 2)) / 100,
float(random.randint(1, 2)) / 100,
0.001,
float(random.randint(1, 2)) / 100
]

#使用滤镜
img = img.transform((150,50),Image.PERSPECTIVE,params)
img = img.filter(ImageFilter.EDGE_ENHANCE_MORE)

#6、查看效果
img.show() #展示
img.save("%s.jpg"%randomText,"JPEG") #保存,保存路径

import string
from random import randint, sample
from PIL import Image, ImageDraw, ImageFont, ImageFilter

img_size = (150,50) # 定义画布大小
img_rgb = (255,255,255) # 定义画布颜色,白色
img = Image.new("RGB",img_size,img_rgb)

img_text = " ".join(sample(string.ascii_letters+string.digits, 5))

drow = ImageDraw.Draw(img)
for i in range(10):

drow.line([tuple(sample(range(img_size[0]),2)), tuple(sample(range(img_size[0]),2))], fill=(0,0,0))

for i in range(99):

drow.point(tuple(sample(range(img_size[0]),2)), fill=(0,0,0))

font = ImageFont.truetype("simsun.ttc", 24) # 定义文字字体和大小
drow.text((6,6), img_text, font=font, fill="green")

params = [
1 - float(randint(1,2)) / 100,
0,
0,
0,
1 - float(randint(1,10)) /100,
float(randint(1,2)) / 500,
0.001,
float(randint(1,2)) / 500
]

img = im​g.transform(img_size, Image.PERSPECTIVE, params)

img = img.filter(ImageFilter.EDGE_ENHANCE_MORE)

img.show()

money = float(input('请输入您打算用来投资的本金 \> '))
year = int(input('请输入投资期限(单位:年) \> '))
rate = float(input('请输入投资年化收益率 \> '))
Type = int(input('''1.每日利息复投 2.每月利息复投 3.每年利息复投 请选择复投方式 \> '''))

def day_return(money,year,rate=0.12):
'方案:每日利息加入本金复投!'
for y in range(year):
for day in range(365):
money = money*rate/365 + money
print('第%d年结束时,本金为:%.2f' % (y+1,money))

def month_return(money,year,rate=0.12):
'方案:每月利息加入本金复投!'
for y in range(year):
for month in range(12):
money = money*rate/12 + money
print('第%d年结束时,本金为:%.2f' % (y+1,money))

def year_return(money,year,rate=0.12):
'方案:每年利息加入本金复投!'
for y in range(year):
money = money*rate + money
print('第%d年结束时,本金为:%.2f' % (y+1,money))

if Type == 1:
day_return(money,year,rate)
elif Type == 2:
month_return(money,year,rate)
elif Type == 3:
year_return(money,year,rate)
else:
print('输入有误!')

from urllib import request, parse
import json

url = 'http://fanyi.baidu.com/v2transapi'
context = input('请输入需要翻译的内容 :\> ')

if context >= '\u4e00' and context <= '\u9fa5':

From,To = 'zh','en'

else:
From,To = 'en','zh'

data = {
'query':context,
'from':From,
'to':To,
'transtype':'translang',
'simple_means_flag':3
}
data = parse.urlencode(data).encode('utf-8')

r = request.Request(url,data)
r.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0')
html = request.urlopen(r).read().decode('utf-8')
Result = json.loads(html)

print('翻译结果为:' + Result['trans_result']['data'][0]['dst'])

import random
from time import sleep

amount = round(float(input('请设置红包的金额 \> ')),2)
num = int(input('请设置红包的数量 \> '))
hb_dict = {}
xing = '赵钱孙李周吴郑王'
ming = '一二三四五六七八九十'

while num:

xingming = random.choice(xing)+random.choice(ming)+random.choice(ming)
if xingming in hb_dict.keys():
    xingming = random.choice(xing)+random.choice(ming)+random.choice(ming)

num -= 1
if num == 0:
    print('%s抢到红包%.2f元 红包抢完了!' % (xingming,amount))
    hb_dict[amount] = xingming
    amount -= amount
elif num > 0:
    hb = round(random.uniform(0.01,amount)/num,2)
    hb_dict[hb] = xingming
    # 算法: 在0.01到红包总金额之间随机一个浮点数 / 红包剩余个数
    print('%s抢到红包%.2f元 剩余%d个!' % (xingming,hb,num))
    amount = round((amount - hb),2)

sleep(1)

max_hb = max(hb_dict.items())
print('%s运气最佳 抢得%.2f元!!' % (max_hb[1],max_hb[0]))

随机生成200个序列号

import random
import string

for num in range(200):
numlist = []
for i in range(12):
numlist.append(random.choice(string.ascii_uppercase+string.digits))

with open('200.txt', 'a') as f:     # 'a' 表示追加写入
    f.write(''.join(numlist)+'\n')

f.close

import Image, ImageFont, ImageDraw
text = "EwWIieAT"
im = Image.new("RGB",(130,35), (255, 255, 255))
dr = ImageDraw.Draw(im)

font = ImageFont.truetype("kk.TTF", 24)
#simsunb.ttf 这个从windows fonts copy一个过来
dr.text((10, 5), text, font=font, fill="#000000")

im.show()
im.save("t.png")

缩略图

from PIL import Image
img = Image.open('god.jpg')
img = img.resize((250, 156), Image.ANTIALIAS)
img.save('sharejs_small.jpg')

PythonWare公司提供了免费的图像处理工具包PIL(Python Image Library),该软件包提供了基本的图像处理功能,本文介绍了使用PIL工具包中的Image模块进行比对的过程。

#!/usr/bin/env python

import Image, ImageChops

img1 = Image.open(r'C:\cygwin\tmp\Sonic1.jpg') Capture1.PNG
img2 = Image.open(r'C:\cygwin\tmp\Sonic2.jpg') Diff.jpg
img3 = ImageChops.invert(img2)
Image.blend(img1,img3,0.5).show()

PIL处理图片之加水印

#!/usr/bin/env python

import Image, ImageEnhance, ImageDraw, ImageFont

def text2img(text, font_color="Blue", font_size=25):

"""生成内容为 TEXT 的水印"""

font = ImageFont.truetype('simsun.ttc', font_size)

#多行文字处理
text = text.split('\n')
mark_width = 0
for  i in range(len(text)):
    (width, height) = font.getsize(text[i])
    if mark_width < width:
        mark_width = width
mark_height = height * len(text)

#生成水印图片
mark = Image.new('RGBA', (mark_width,mark_height))
draw = ImageDraw.ImageDraw(mark, "RGBA")
draw.setfont(font)


for i in range(len(text)):
(width, height) = font.getsize(text[i])
draw.text((0, i*height), text[i], fill=font_color)
return mark


​def set_opacity(im, opacity):

"""设置透明度"""

assert opacity >=0 and opacity < 1
if im.mode != "RGBA":
    im = im.convert('RGBA')
else:
    im = im.copy()
alpha = im.split()[3]
alpha = ImageEnhance.Brightness(alpha).enhance(opacity)
im.putalpha(alpha)
return im


​def watermark(im, mark, position, opacity=1):

"""添加水印"""

try:
    if opacity < 1:
        mark = set_opacity(mark, opacity)
    if im.mode != 'RGBA':
        im = im.convert('RGBA')
    if im.size[0] < mark.size[0] or im.size[1] < mark.size[1]:
        print "The mark image size is larger size than original image file."
        return False

    #设置水印位置

    if position == 'left_top':
        x = 0
        y = 0
    elif position == 'left_bottom':
        x = 0
        y = im.size[1] - mark.size[1]
    elif position == 'right_top':
        x = im.size[0] - mark.size[0]
        y = 0
    elif position == 'right_bottom':
        x = im.size[0] - mark.size[0]
        y = im.size[1] - mark.size[1]
    else:
        x = (im.size[0] - mark.size[0]) / 2
        y = (im.size[1] - mark.size[1]) / 2

    layer =Image.new('RGBA', im.size,)
    layer.paste(mark,(x,y))
    returnImage.composite(layer, im, layer)

 exceptExceptionas 
             e:print">>>>>>>>>>> WaterMark EXCEPTION:  "+ str(e)

returnFalsedef
main():
text = u'Linsir.水印.\nvi5i0n@hotmail.com'#
text = open('README.md').read().decode('utf-8')#
print text
im =Image.open('origal.png')
mark = text2img(text)
image = watermark(im, mark,'center',0.9)
if image:
image.save('watermark.png')
image.show()else:print"Sorry, Failed."

if name =='main':

import sys, Image

img = Image.open(sys.argv[1]).convert('YCbCr')

w, h = img.size

data = img.getdata()

cnt = 0

for i, ycbcr in enumerate(data):

y, cb, cr = ycbcr  

if 86 <= cb <= 117 and 140 <= cr <= 168:  

    cnt += 1  

print '%s %s a porn image.'%(sys.argv[1], 'is' if cnt > w h 0.3 else 'is not')

运行:
E:/>c:/python25/python test_skin.py 114.jpeg

114.jpeg is a porn image.

import pymysql

db=pymysql.connect(host="127.0.0.1",user="root",passwd="123456",db="mysql",charset='utf8' )

cursor = db.cursor()

cursor.execute("SELECT user,host,password from user")

data = cursor.fetchall()

print(data)
cursor.close()#关闭游标
db.close()#关闭数据库连接

import pymysql

db = pymysql.connect(host='10.3.1.174',user='root',password='123456',db='test')
cursor = db.cursor()

sql = "INSERT INTO employee (first_name, last_name, age, sex, income) " \
"VALUES ('w', 'Eason', '29', 'M', '8000')"

try:
cursor.execute(sql)
db.commit()
except:
db.rollback()

db.close()

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python-PIL模块画图

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python-PIL模块画图

python中执行mysql遇到like 怎么办 ?​​sql = "SELECT * FROM T_ARTICLE WHERE title LIKE '%%%%%s%%%%'" % searchStr执行成功,print出SQL语句之后为
2023-01-31

python PIL模块

http://onlypython.group.iteye.com/group/wiki/1372-python-graphics-p_w_picpath-processing-library-introduced-the-p_w_picp
2023-01-31

Python用turtle模块画图

学习使用模块turtle画图功能,主要记住几个参数import turtle #导入turtle画图模块turtle.showturtle() #调出turtle画板turtle.forward(100) #坐标前进100个位置tu
2023-01-31

python怎么导入pil模块

在Python中,可以使用`import`语句导入PIL模块。PIL(Python Imaging Library)是一个用于打开、编辑和保存多种图像文件格式的库。```pythonimport PIL```或者,可以使用`from`关键字
2023-08-15

使用Python的PIL模块来进行图片对比

在使用google或者baidu搜图的时候会发现有一个图片颜色选项,感觉非常有意思,有人可能会想这肯定是人为的去划分的,呵呵,有这种可能,但是估计人会累死, 开个玩笑,当然是通过机器识别的,海量的图片只有机器识别才能做到。 那用pytho
2022-06-04

通过python turtle画图模块做

最新再看python3,发现了一个“海龟”画图模块,就上手用了一下,主要用到一些简单的函数和列表适合初学者浏览。windows下写的,可以使用pyinstall生成exe文件。#Copyright LeoYuan 2017#mail:cen
2023-01-31

使Python中的turtle模块画图两

turtle.circle(radius, extent=None, steps=None)描述: 以给定半径画圆参数:radius(半径); 半径为正(负),表示圆心在画笔的左边(右边)画圆extent(弧度) (optional);st
2023-01-31

使用Python的turtle模块画图的方法

简介:turtle是一个简单的绘图工具。它提供了一个海龟,你可以把它理解为一个机器人,只听得懂有限的指令。 1.在文件头写上如下行,这能让我们在语句中插入中文 #-*-coding:utf-8-*- 2.用importturtle导入tur
2022-06-04

Python使用PIL模块生成随机验证码

Python生成随机验证码,需要使用PIL模块,具体内容如下安装:pip3 install pillow基本使用 1. 创建图片from PIL import Image img = Image.new(mode='RGB', size=(
2022-06-04

python PIL模块与随机生成中文验证码

在这之前,你首先得了解Python中的PIL库。PIL是Python Imaging Library的简称,PIL是一个Python处理图片的库,提供了一系列模块和方法,比如:裁切,平移,旋转,改变尺寸等等。在PIL库中,任何一个图像都是用
2022-06-04

用Python的turtle模块画国旗

最近在学Python,发现Python的海龟绘图非常有趣,就分享一下!话不多说,先来Python turtle的官方文档链接: Python turtle。这里面有turtle的各类指令。turtle画国旗主要用到两个函数:draw_ren
2023-01-31

Python图像处理之PIL库

本篇文章给大家带来了关于python的相关知识,其中主要整理了PIL库的相关问题,PIL库是一个具有强大图像处理能力的第三方库,不仅包含了丰富的像素、色彩操作功能,还可以用于图像归档和批量处理,下面一起来看一下,希望对大家有帮助。要点:PIL库是一个具有强大图像处理能力的第三方库,不仅包含了丰富的像素、色彩操作功能,还可以用于图像归档和批量处理。1.PIL库概述PIL(Python Image Li
2022-06-23

python模块pygal,出图工具

呵呵。天气炎热,没啥心情,闲逛博客,看到pygal这个画图工具,挺有意思的,就研究了下。一直用rrdtool工具画图,但不能通过数据立即生成图片。安装pip install pygal官方文档http://pygal.org/documen
2023-01-31

python安装PIL模块时Unable to find vcvarsall.bat错误的解决方法

可能很多人遇到过这个错误,当使用setup.py安装python2.7图像处理模块PIL时,python默认会寻找电脑上以安装的vs2008.如果你没有安装vs2008,会出现Unable to find vcvarsall.bat错误。
2022-06-04

基于python的-PIL定位截图

# -*- coding:utf-8 -*-from selenium import webdriverfrom selenium.webdriver.support.ui import WebDriverWait# 安装PIL包# pip
2023-01-31

python模块:smtplib模块

1.使用本地的sendmail协议进行邮件发送格式(1):smtpObj=smtplib.SMTP([host [,port [,local_hostname]]])host:SMTP服务器主机的IP地址或者是域名port:服务的端口号(默
2023-01-31

Python模块:time模块

time模块:python中处理时间的基础模块,有时间戳,元组,自定义,三种时间表现形式。python中时间戳的值是以1970年1月1日0点开始计算的,单位是秒。时间戳:就是两个时间差的数值。时区:传说中在开发服务器/客户端程序时,时区不一
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录