【CSDN 编者按】用你熟悉的代码就能获取高清字帖,是不是撞到你怀里了呢,一起来了解一下吧。

作者 | 天元浪子 责编 | 欧阳姝黎

出品 | CSDN博客

近日网购上瘾,狂买至肉疼,最后连一本打折后28块钱的兰亭序字帖也不舍得下单了。犹豫之间,发现了一个不错的网站——书法欣赏,名家名帖尽收于此。令人惊喜的是,这个网站居然提供了兰亭序全文单字高清字帖,网址见下文中的代码。

这下妥了,不用花钱买字帖了,下载下来照着单字临摹,比字帖更好用。对照网址略加分析之后,15行代码一气呵成。

import requests
from bs4 import BeautifulSoup


k = 0 # 兰亭序全文共324字,k为文中每个字的序号,0表示全文图片
for i in range(65): # 共有65页面需要抓取
    if i:
        url = 'http://www.yac8.com/news/10725_%d.html'%(i+1)
    else:
        url = 'http://www.yac8.com/news/10725.html'
    print('正在处理第%d页。。。'%(i+1))
    soup = BeautifulSoup(requests.get(url).text, 'lxml')
    for img in soup.find(id='newsContent').find_all('img'):
        with open('res/%03d.jpg'%k, 'wb') as fp:
            fp.write(requests.get(img['src']).content)
        k += 1
print('处理完毕!')

这段代码使用 requests 模块下载网页,使用 BeautifulSoup 模块解析图片路径;针对每一个图片路径再次使用 requests.get() 下载图片内容并保存为本地文件。下载的325张图片保存在和脚本文件同级的 res 文件夹内,因此,运行之前要确保该路径存在。

如果想要打印成册,就需要消除背景色。下面的代码,将 res 路径下的234张图片每6个字拼合为1页,共计54页。处理过程将 PIL 对象转为 NumPy 数组,一是为了快速消除背景色,二是可以直接使用 OpenCV 的膨胀和腐蚀函数。

from PIL import Image
import cv2
import numpy as np


for i in range(54):
    bg = Image.new('RGB', (2200,3300), color=(255,255,255))
    for j in range(6):
        k = i*6 + j
        im = Image.open('res/%03d.jpg'%(k+1))
        w, h = im.size
        wn, hn = 1100, int(h*w/1100)
        im = im.resize((wn, hn))
        d = (hn-1100)//2
        im_box = im.crop((0, d, 1100, d+1100))
        bg.paste(im_box, ((1-j//3)*1100, (j%3)*1100))


    im_arr = np.array(bg)
    im_arr = np.where(im_arr<80, im_arr, 255)


    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5,5))
    im_arr = cv2.dilate(im_arr, kernel) # 膨胀
    im_arr = cv2.erode(im_arr, kernel) # 腐蚀


    cv2.imwrite('out/%02d.jpg'%(i+1), im_arr)
    print('Page%d Ok'%(i+1))

运行这段代码后, out 文件夹下生成了54张拼合后的图片,可以直接打印装订了。

最后附上兰亭序全文共计324字,如需使用文字代替数字为图片命名,上面的代码稍加改动即可,请各位自行修改。

永和九年岁在癸丑暮春之初会于会稽山阴之兰亭修禊事也群贤毕至少长咸集此地有崇山峻岭茂林修竹又有清流激湍映带左右引以为流觞曲水列坐其次虽无丝竹管弦之盛一觞一咏亦足以畅叙幽情是日也天朗气清惠风和畅仰观宇宙之大俯察品类之盛所以游目骋怀足以极视听之娱信可乐也夫人之相与俯仰一世或取诸怀抱悟言一室之内或因寄所托放浪形骸之外虽趣舍万殊静躁不同当其欣于所遇暂得于己快然自足不知老之将至及其所之既倦情随事迁感慨系之矣向之所欣俯仰之间已为陈迹犹不能不以之兴怀况修短随化终期于尽古人云死生亦大矣岂不痛哉每览昔人兴感之由若合一契未尝不临文嗟悼不能喻之于怀固知一死生为虚诞齐彭殇为妄作后之视今亦犹今之视昔悲夫故列叙时人录其所述虽世殊事异所以兴怀其致一也后之览者亦将有感于斯文

原文链接:https://blog.csdn.net/xufive/article/details/114530480

Logo

20年前,《新程序员》创刊时,我们的心愿是全面关注程序员成长,中国将拥有新一代世界级的程序员。20年后的今天,我们有了新的使命:助力中国IT技术人成长,成就一亿技术人!

更多推荐