Python is not only easier to use than other programming languages. In life, the technical scope of Python may not be as deep as that of other programming languages, but Python is definitely the most grounded. In theory, Python's affinity to the people can also be said to be the position of big brother. So what interesting little functions can Python use in our life?
1, Word cloud picture
Do you often see this kind of picture on the Internet? In fact, the official name of this kind of picture is Ci yuntu. The concept of "Word Cloud" was first put forward by Rich Gordon, associate professor of Journalism and director of new media at Northwestern University. Word Cloud is a visual presentation of text data. It generally consists of some color graphics composed of words extracted from text data. The core of Word Cloud map is to convey the valuable information behind a large amount of text data with the visual expression of high-frequency keywords, which is also completed by Python.
Word cloud Code:
def wordCloudImage(wordlist,width,height,bgcolor,savepath): # You can open your favorite word cloud to show the background map # cloud_mask = np.array(Image.open('nezha.png')) # Define some attributes of word cloud wc = WordCloud( width=width, # Sheet width 900 height=height, # Sheet height 3000 background_color=bgcolor, # Split to "black background color" # mask=cloud_mask, # Background pattern max_words=300, # Displays the maximum number of words font_path='./fonts/simhei.ttf', # Display Chinese collocations=False, # min_font_size=5, # Minimum size # max_font_size=100, # Maximum size ) # wordfile is a list of words after word segmentation x = wc.generate(wordlist) # Generate word cloud image image = x.to_image() # Show word cloud pictures image.show() # savepath is the image saving address, which saves the word cloud image wc.to_file(savepath)
2, Generate hand drawn votes
Now many software can realize the technology of converting photos into hand drawn form, but some software will charge. Here, we can also use python. The advantage of using Python is that it has stronger personality and can be customized; And batch conversion can be realized, which is convenient and fast.
Here we use the pilot library, which is a very powerful and professional Python image processing library
Original drawing:
Hand drawing:
code:
# -*- coding: UTF-8 -*- from PIL import Image import numpy as np # Original picture path original_image_path = "E:\\picture\\Lujiazui.jpg" # The path of the hand drawn picture to be generated can be customized handdrawn_image_path = "E:\\picture\\Lujiazui-Hand drawn.jpg" # Load the original image and convert the image into array data a=np.asarray(Image.open(original_image_path).convert('L')).astype('float') depth=10. #Take the gradient value of image gray grad=np.gradient(a) #Take the gradient value of horizontal and vertical image grad_x,grad_y=grad grad_x=grad_x*depth/100. grad_y=grad_y*depth/100. A=np.sqrt(grad_x**2+grad_y**2+1.) uni_x=grad_x/A uni_y=grad_y/A uni_z=1./A #The top view angle of the light source is converted to radian values vec_el=np.pi/2.2 #The azimuth angle of the light source is converted to radian value vec_az=np.pi/4. #Influence of light source on x-axis dx=np.cos(vec_el)*np.cos(vec_az) dy=np.cos(vec_el)*np.sin(vec_az) dz=np.sin(vec_el) #Normalize the light source and convert the gradient into gray b=255*(dx*uni_x+dy*uni_y+dz*uni_z) #Avoid data out of bounds and cut the generated gray value to 0-255 b=b.clip(0,255) #Image reconstruction im=Image.fromarray(b.astype('uint8')) print('complete') im.save(handdrawn_image_path)
3, Generate art QR code
Now there are many QR code generation tools. python also has a QR code generation library myqr, which can add picture background to the QR code. It looks very interesting. The effects are as follows:
code:
myqr https://zhuanlan.zhihu.com/pydatalysis -p d:\hmbb.jpg -c
4, Generate ID photo
Here, we use two sets of codes: pilot and removebg, which are used to modify the photo size and matting respectively.
AI technology is used in removebg here. The matting edge is very soft and the effect is very good.
code:
# encoding=utf-8 from PIL import Image from removebg import RemoveBg # removebg involves APIs_ Key, you need to apply on its official website api_key = 'PysKLJueeoyK9NbJXXXXXXXXX' def change_bgcolor(file_in, file_out, api_key, color): ''' #Must be in png format ''' p, s = file_in.split(".") rmbg = RemoveBg(api_key, 'error.log') rmbg.remove_background_from_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) # Modify photo size 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' # The size can be modified as required # change_size(file_in, file_out, width, height) # Change background color color = (0, 125, 255) change_bgcolor(file_in, file_out, api_key, color)
5, Generate Jiugong grid picture
For some time, Jiugongge pictures were popular in the circle of friends, that is, one picture was divided into nine pictures, which quickly stood out in the circle of friends and looked particularly artistic and advanced. This Jiugong grid can also be done with many software. If it is implemented in Python, it can be drafted in less than 50 lines of code.
code:
# Circle of friends Jiugongge picture making # encoding=utf-8 from PIL import Image import sys # First fill the input image with a square def fill_image(image): width, height = image.size # Select the larger value of the length and width of the original picture as the radius of the Jiugong grid of the new picture new_image_length = width if width > height else height # Production of new pictures [white background] new_image = Image.new(image.mode, (new_image_length, new_image_length), color='white') # Paste the original image on the new image, and the position is centered 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 # Cut the picture into nine squares def cut_image(image): width, height = image.size # Three pictures in a row 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 # Save picture def save_images(image_list): index = 1 for image in image_list: image.save('e:\\picture\\'+str(index) + '.png', 'PNG') index += 1 if __name__ == '__main__': file_path = "e:\\picture\\Totoro.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)
Here I would like to recommend my own Python learning Q group: 249029188. All of them are Python learners. If you want to learn or are learning python, you are welcome to join. Everyone is a software development party and shares dry goods from time to time (only related to Python software development), including a copy of the latest Python advanced materials and zero basic teaching in 2021 compiled by myself, Welcome to advanced and interested partners of Python!