最新的有趣開源,Python製作抖音特有的重影彩色圖片!
阿新 • • 發佈:2019-01-10
靈光一閃,這麼簡單的東西為什麼我蠢了???
request.urlretrieve(img_url, 'background.jpg')
當總結寫的假的好麼?
然後更改了一下,現在是可以
功能1:批量下載圖片
功能2:轉化為抖音圖片(無論提交外鏈或者本地圖片)
#!/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.0*a*b/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('載入完畢.......')
抖音圖片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()