灵光一闪,这么简单的东西为什么我蠢了???
request.urlretrieve(img_url, 'background.jpg')
当总结写的假的好么?
然后更改了一下,现在是可以
功能1:批量下载图片
功能2:转化为抖音图片(无论提交外链或者本地图片)
<pre style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: Consolas, Menlo, Courier, monospace; font-size: 16px; white-space: pre-wrap; position: relative; line-height: 1.5; color: rgb(153, 153, 153); margin: 1em 0px; padding: 12px 10px; background: rgb(244, 245, 246); border: 1px solid rgb(232, 232, 232); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px;"> #!/usr/bin/env python
-- coding: utf-8 --
@Time : 2018/11/15 19:40
@Author : Empirefree
@File : 2.py
@Software: PyCharm Community Edition
import copy
import os
import argparse
import re
import numpy as np
from urllib import request
from PIL import Image
import requests
from lxml import etree
显示下载数据块
def cbk(a,b,c):
'''回调函数
@a:已经下载的数据块
@b:数据块的大小
@c:远程文件的大小
'''
per=100.0ab/c
if per>100:
per=100
print('%.2f%%' % per)
def Download():
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}
response = requests.get('http://www.ivsky.com/tupian/ziranfengguang/', headers=headers)
使用lxml解析网页
html = etree.HTML(response.text)
img_urls = html.xpath('.//img/@src') # 先找到所有的img
i = 0
for img_url in img_urls:
request.urlretrieve(img_url, 'image' + str(i) + '.jpg', cbk)
i += 1
print('已成功保存为/image[].jpg')
print('下载完成!!!')
def main(imagepath):
将图片转换为三维数组
img = Image.open(imagepath)
img_arr = np.array(img)
提取R
img_arr_r = copy.deepcopy(img_arr)
img_arr_r[:, :, 1:3] = 0
提取GB
img_arr_gb = copy.deepcopy(img_arr)
img_arr_gb[:, :, 0] = 0
创建画布并将图片错放开
img_r = Image.fromarray(img_arr_r).convert('RGBA')
img_gb = Image.fromarray(img_arr_gb).convert('RGBA')
canvas_r = Image.new('RGB', img.size, color=(0, 0, 0))
canvas_gb = Image.new('RGB', img.size, color=(0, 0, 0))
canvas_r.paste(img_r, (6, 6), img_r)
canvas_gb.paste(img_gb, (0, 0), img_gb)
img_douyin = Image.fromarray(np.array(canvas_gb) + np.array(canvas_r))
img_douyin.save('douyin.jpg')
img_douyin.show()
def IsHttp(imagepath):
if re.search('http', imagepath) != None:
return 1
else:
return 0
if name == 'main':
parser = argparse.ArgumentParser()
parser.add_argument('-i', '--image', help='Image to be processed(give the file path).')
args = parser.parse_args()
main(args.image)
while(1):
print('温馨提示(您目前文件路径为):',os.path.dirname(os.path.realpath(file)))
fun = int(input('请输入您想选择的功能:[1]批量下载图片 [2]制作抖音图片
'))
if fun == 1:
Download()
else:
imagepath = input('请输入您的图片路径: ')
if IsHttp(imagepath):
request.urlretrieve(imagepath, 'background.jpg') #下载图片
imagepath = os.path.abspath('background.jpg')
main(imagepath)
print('加载完毕.......')
</pre>
抖音图片2.0
实现目标(如下所示):
实现效果:
代码分析:
1、将图片转换成三维数组,然后对于rgb()这三种颜色提取
2、Rgb(255, 0, 0) 和Rgb(0, 255, 255)位置改变一下()然后就会有像素错位的效果
1 canvas_r.paste(img_r, (6, 6), img_r)
3.然后单纯保存,显示图片即可
1 img_douyin.save('douyin.jpg') 2 img_douyin.show()










网友评论