两分钟教你玩转千图成像Part1~

导读

本期将实现用Python进行豆瓣图片的爬取,并用软件快速生成马赛克拼图。 两分钟教你玩转千图成像Part1~_第1张图片 图片获取方式:微信公众号后台回复: 照片

软件获取方式:微信公众号后台回复:千图成像

微信公众号:

两分钟教你玩转千图成像Part1~_第2张图片

简介

千图成像即马赛克拼图。马赛克拼图主要运用于抽象艺术图像的表达,利用图片像素的原理,将图像的每个色彩点,用不同的马赛克原石(图片)拼贴出来。 两分钟教你玩转千图成像Part1~_第3张图片 两分钟教你玩转千图成像Part1~_第4张图片 网上流传较广的方法为通过 照片无规则拼接加调整背景透明度的方法实现(如下图,来源见水印)。但从本质上来说是一种“取巧”的方法。 两分钟教你玩转千图成像Part1~_第5张图片
那本系列教程将用Python教你玩转千图成像,从原理出发,如何用代码快速、准确的实现马赛克拼图。

本系列教程

Part1:Python实现图片爬取+软件快速体验马赛克拼图

part2:马赛克拼图实现原理+代码实现

part3:如何实现多样式的马赛克拼图

照片爬取

两分钟教你玩转千图成像Part1~_第6张图片 两分钟教你玩转千图成像Part1~_第7张图片 本文以爬取周杰伦豆瓣照片为例。进入周杰伦的图片界面,获得其地址链接规则与请求头信息,可以看到不同页数对应的strat值不同,规则为 start=30*第几页。
#请求头信息与链接
headers = {  'User-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36"  }
url = 'https://movie.douban.com/celebrity/1048000/photos/?type=C&start=' + str(page * 30) + '&sortby=like&size=a&subtype=a'
然后通过查看HTML代码获得图片对应的class值,通过requests与bs4对页面进行解析与爬取。完整代码如下。
# -*- utf-8 -*-

import os
import requests
from bs4 import BeautifulSoup

headers = {
	'User-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36"
	}
def GetHtmlText(url):
    try:
        r = requests.get(url, headers=headers)
        #print(url)
        r.raise_for_status()
        r.encoding = 'utf-8'
        return r.text
    except:
        return ""

def main(pages):
    FilePath = os.getcwd() + '\jay\\'
    if not os.path.exists(FilePath):
        os.makedirs(FilePath)
    TempPage = pages
    FileNum = 1
    for page in range(pages):
        url = 'https://movie.douban.com/celebrity/1048000/photos/?type=C&start=' + str(page * 30) + '&sortby=like&size=a&subtype=a'
        html = GetHtmlText(url)
        soup = BeautifulSoup(html, 'html.parser')
        #print(str(page * 30))
        uls = soup.find_all('ul', {"class": "poster-col3 clearfix"})
        print(html)
        for ul in uls:
            imgs = ul.find_all('img')
            for img in imgs:
                imgurl = img['src']
                imgcontent = requests.get(imgurl).content
                filename = str(FileNum) + '.jpg'
                with open(os.getcwd() + '/jay/' + filename, 'wb') as wf:
                    wf.write(imgcontent)
                FileNum += 1

if __name__ == '__main__':
	main(10)

运行结果如下。值得一说的是,在进行爬取时默认保存的图片格式为jpg,而豆瓣图片储存格式并非完全为jpg格式,所以会出现部分图片无法读取与查看。但并不影响后续的操作。

两分钟教你玩转千图成像Part1~_第8张图片

软件生成马赛克拼图

Foto-Mosaik-Edda是一个简单易用的向导程序,软件大小为1.47MB,用户可以使用它自己的照片,轻松的创建出由很多张图片组成的马赛克拼图

1.创建图库

两分钟教你玩转千图成像Part1~_第9张图片 两分钟教你玩转千图成像Part1~_第10张图片 两分钟教你玩转千图成像Part1~_第11张图片 2. 创建马赛克拼图 两分钟教你玩转千图成像Part1~_第12张图片 两分钟教你玩转千图成像Part1~_第13张图片 两分钟教你玩转千图成像Part1~_第14张图片 两分钟教你玩转千图成像Part1~_第15张图片 两分钟教你玩转千图成像Part1~_第16张图片 两分钟教你玩转千图成像Part1~_第17张图片 两分钟教你玩转千图成像Part1~_第18张图片 两分钟教你玩转千图成像Part1~_第19张图片 3. 部分结果 两分钟教你玩转千图成像Part1~_第20张图片 两分钟教你玩转千图成像Part1~_第21张图片 往期推荐
  • Torch+SSD实现目标检测是否佩戴口罩
  • 手写作业/文件太多不想写?手写模拟器发布啦
  • 【漫评】你驻足于春色中,于那独一无二的春色之中

你可能感兴趣的:(两分钟教你玩转千图成像Part1~)