一键转手绘(照片一键生成手绘画免费下载

Python就像pbddn的口袋,几乎什么都能做。 适合外行小白们摸索着学习,可以大大提高他们对编程的兴趣。

虽然用python实现的某些工具在技术上未必是最佳的,但可能是最简洁、最适合大众的。

介绍几个不错的图像处理案例,附上代码,尽量让大家拿来使用。

1、生成手绘图片

目前,许多软件可以将照片转换为手绘格式。 python也可以实现。 另外,定制性强,可以批量转换。

在这里使用pillow库。 这是一个非常强大和专业的Python图像处理库

原图:

生成手绘后:

代码:

# #-* -编码: utf-8-* –

自由端口图像

importnumpyasnp

# #原始图像路径

original_image_path=’E:\\图片\\陆家嘴. jpg ‘

# #可以自定义生成的手绘图像的路径

handdrawn_image_path=’E:\\图片\\陆家嘴-手绘. jpg ‘

加载# # #原画,将图像转换为排列数据

a=NP.AS阵列(图像打开(原始图像路径) .转换(‘ l ‘ ).AS类型) ‘浮点’ ) )。

深度=10。

取# # #图像的灰度梯度值

是grad=NP.gradient(a )。

取# # #横纵图像的梯度值

grad_x,grad_y=grad

grad _ x=grad _ x *深度/100。

grad _ y=grad _ y *深度/100。

a=NP.sqrt(grad_x**2grad_y**21.) ) ) ) ) ) ) )到) ) ) ) ) ) ) ) )。

uni _ x=格雷德_ x/a

uni _ y=等级y/a

uni_z=1./A

将# # #光源的平面角度转换为弧度值

vec _ El=美国航空公司/2.2

将# # #光源的方位角转换为弧度

VEC _ AZ=美国航空公司。

# #光源对x轴的影响

dx=美国国家航空运输委员会(vec_az )美国航空运输委员会

dy=美国全国石油公司(vec_az )美国石油公司(vec_az )

dz=美国国家安全委员会(VEC _ El ) )

将# # #光源标准化,将坡度转换为灰度

b=255 * (dx * uni _ xdy * uni _ ydz * uni _ z ) )

避免# # # #数据的越境,将生成的灰度值修整为0-255

b=b.clip (0,255 ) ) ) ) )。

# #图像重构

im=来自图像阵列(b.as类型(‘ uint8’ ) )

print (完成) ) ) )。

im.save (手绘图图像路径) )。

在这里可以制作批量处理的手绘脚本,请大家试一下。

2、生成证件照

这里使用pillow和removebg分别用于调整照片的大小和抠照片。

在这里,removebg使用AI技术,抠边很柔软,效果很好。

代码:

# #编码=utf-8

自由端口图像

fromremovebgimportRemoveBg

#removebg与api_key有关,需要向其官方网站申请

API _ key=’ pyskljueeoyk9nbj xxxxxxxxxx ‘

ef change _ bgcolor (文件输入、文件输出、API _密钥、颜色) :

””

# #必须为png格式

””

p,s=文件输入.分割(‘.’ )

rmbg=移除BG (API _ key,’错误. log ‘ ) )。

rmbg .移除_背景_从_ img

_file(file_in)
  file_no_bg = “{}.{}_no_bg.{}”.format(p, s, s)
  no_bg_image = Image.open(file_no_bg)
  x, y = no_bg_image.size
  new_image = Image.new(‘RGBA’, no_bg_image.size, color=color)
  new_image.paste(no_bg_image, (0, 0, x, y), no_bg_image)
  new_image.save(file_out)

# 修改照片尺寸
def change_size(file_in, file_out, width, height):
  image = Image.open(file_in)
  resized_image = image.resize((width, height), Image.ANTIALIAS)
  resized_image.save(file_out)

if __name__ == “__main__”:
  file_in = ‘E:\\girl.png’
  file_out = ‘E:\\girl_cutout.png’
  # 尺寸可按需求自修改
  # change_size(file_in, file_out, width, height)
  
  # 换背景色
  color = (0, 125, 255)
  change_bgcolor(file_in, file_out, api_key, color)
  

3、生成艺术二维码

现在有不少二维码生成工具,python也有一款二维码生成库-myqr,可以给二维码加上图片背景,看起来很炫,效果如下

使用pip安装myqr,非常简单。

该库可以在命令行中运行,你只需要传递网址链接、图片地址等参数,就可以生成相应的二维码,二维码图片默认保存在当前目录下面。

命令行输入格式:

myqr 网址链接

比如:

myqr https://zhuanlan.zhihu.com/pydatalysis

再按enter键执行,就能生成对应链接的二维码了。

怎么融合图片呢?很简单,传入图片地址参数’-p’

比如说我d盘有一张海绵宝宝的图片,地址是:d:\hmbb.jpg即传入参数’-pd:\hmbb.jpg’在命令行键入:

myqr https://zhuanlan.zhihu.com/pydatalysis -p d:\hmbb.jpg -c

执行就能生成上图的海绵宝宝主题二维码了。

4、生成词云图

词云图一般用来凸显文本关键词,产生视觉上的焦点,利用好词云会让数据更加有说服力。

python也有专门制作词云的库-wordcloud,能自定义颜色和形状。

比如我用小丑的豆瓣评论做成一张词云图。

作词云图,首先要对收集文本,然后对文本做分词处理,最后生成词云。

这里不对前两步做详细解析,只给出词云代码:

def wordCloudImage(wordlist,width,height,bgcolor,savepath):
    # 可以打开你喜欢的词云展现背景图
    # cloud_mask = np.array(Image.open(‘nezha.png’))
    # 定义词云的一些属性
    wc = WordCloud(
        width=width,  # 图幅宽度 900
        height=height,  # 图幅高度 3000
        background_color=bgcolor,  # 背景图分割颜色为白色 “black”
        # mask=cloud_mask,  # 背景图样
        max_words=300,  # 显示最大词数
        font_path=’./fonts/simhei.ttf’,  # 显示中文
        collocations=False,
        # min_font_size=5,  # 最小尺寸
        # max_font_size=100,  # 最大尺寸
    )

    # wordfile是分词后的词汇列表
    x = wc.generate(wordlist)
    # 生成词云图片
    image = x.to_image()
    # 展示词云图片
    image.show()
    # savepath是图片保存地址,保存词云图片
    wc.to_file(savepath)

5、生成微信九宫格图片

有段时间朋友圈比较流行九宫格图片,就是一张图分割成九张图,看着似乎很文艺。

这个可以用很多软件来做,python当然也能实现,只需不到50行代码。

代码:

# 朋友圈九宫格图片制作
# encoding=utf-8
from PIL import Image
import sys

# 先将input image 填充为正方形
def fill_image(image):
    width, height = image.size
    # 选取原图片长、宽中较大值作为新图片的九宫格半径
    new_image_length = width if width > height else height
    # 生产新图片【白底】
    new_image = Image.new(image.mode, (new_image_length, new_image_length), color=’white’)
    # 将原图粘贴在新图上,位置为居中
    if width > height:
        new_image.paste(image, (0, int((new_image_length – height) / 2)))
    else:
        new_image.paste(image, (int((new_image_length – width) / 2), 0))
    return new_image

# 将图片切割成九宫格
def cut_image(image):
    width, height = image.size
    # 一行放3张图
    item_width = int(width / 3)
    box_list = []
    for i in range(0, 3):
        for j in range(0, 3):
            box = (j * item_width, i * item_width, (j + 1) * item_width, (i + 1) * item_width)
            box_list.append(box)
    image_list = [image.crop(box) for box in box_list]
    return image_list

# 保存图片
def save_images(image_list):
    index = 1
    for image in image_list:
        image.save(‘e:\\图片\\’+str(index) + ‘.png’, ‘PNG’)
        index += 1

if __name__ == ‘__main__’:
    file_path = “e:\\图片\\龙猫.jpg”
    image = Image.open(file_path)
    # image.show()
    image = fill_image(image)
    image_list = cut_image(image)
    print(len(image_list))
    save_images(image_list)

python还可以做很多有趣的图像处理,大家可以玩起来!

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注