封面图生成 Manifest

共计2008字,阅读大约7分钟。

一、安装依赖

因为使用的是python库打包,所以在服务器的命令符执行安装以下依赖:

  1. 安装 python
    apt isntall python3
  2. py安装 Pillow
    pip3 install Pillow

二、存放图片

  1. 在站点自建一个 manifest 目录
  2. manifest 下 建一个 gallary 目录并把图片放进去

三、编写运行py

在 manifest 目录下 新建一个 manifest.py

# coding=utf-8

import os
import sys
import json
import hashlib
from PIL import Image

class Single(object):
  def __init__(self, file, manifest):
    self.file = file
    self.mani = manifest

  def hash(self):
    hasher = hashlib.md5()
    with open('gallary/' + self.file, 'rb') as afile:
      buf = afile.read()
      hasher.update(buf)
    self.hash = hasher.hexdigest()
    self.jpeg = 'jpeg/' + self.hash + '.jpeg'
    self.webp = 'webp/' + self.hash + '.webp'
    self.jpeg_th = 'jpeg/' + self.hash + '.th.jpeg'
    self.webp_th = 'webp/' + self.hash + '.th.webp'

  def optimize(self):
    im = Image.open('gallary/' + self.file).convert('RGB')
    im.save(self.jpeg, 'JPEG') # todo: TinyPNG API
    im.save(self.webp, 'WEBP')
    im.thumbnail((450, 300))
    im.save(self.jpeg_th, 'JPEG')  # todo: TinyPNG API
    im.save(self.webp_th, 'WEBP')

  def manifest(self):
    self.mani[self.hash] = {
      'source': self.file,
      'jpeg': [self.jpeg, self.jpeg_th],
      'webp': [self.webp, self.webp_th]
    }

  def main(self):
    self.hash()
    # if os.path.exists(self.jpeg) and os.path.exists(self.webp):
    self.optimize()
    self.manifest()
    return self.mani

def gen_manifest_json():
  onlyfiles = [f for f in os.listdir('gallary') if os.path.isfile(os.path.join('gallary', f))]
  id = 1
  Manifest = {}
  for f in onlyfiles:
    try:
      worker = Single(f, Manifest)
      Manifest = worker.main()
      print(str(id) + '/' + str(len(onlyfiles)))
      id += 1
    except OSError:
      print("Falied to optimize the picture: " + f)
  with open('manifest.json', 'w+') as json_file:
    json.dump(Manifest, json_file)


def main():
  gen_manifest_json()


if __name__ == '__main__':
  main()
  key = input('`manifest.json` saved. Press any key to quit.')
  quit()

代码粘贴进去后保存

在命令符运行

python3 /你的路径xxxxxx/manifest/manifest.py

大概就好了,会多出一些文件

图片[1] | Web Stack | 封面图生成 Manifest | 一个栈
温馨提示:本文最后更新于2022-06-12 12:18:55,某些文章具有时效性,若有错误或已失效,请在下方留言或联系雅舍站长
© 版权声明
THE END
有所帮助就支持一下吧
点赞0当赏 分享
箴言区 抢沙发
头像
达瓦里希请发言...
提交
头像

昵称

取消
昵称表情代码图片