图片的几种方式和压缩图片以及多张图片拼接成一张"/>
只是平时记录使用,只有代码没有讲解,代码是复制就可用但是还有依赖的环境要先下载,视频切割成图片的几种方式和压缩图片以及多张图片拼接成一张
一,第一种
coding:utf-8
import imageio
注释的代码执行一次就好,以后都会默认下载完成
imageio.plugins.ffmpeg.download()
import skimage
from skimage import io
import numpy as np
import warnings
from os import listdir
from PIL import Image
import pngquant
import os
切图片
def get_swf_png(filename,url_id):
# 可以选择解码工具
vid = imageio.get_reader(filename, ‘ffmpeg’)
for num, im in enumerate(vid):
print(“正在剪切%s图片第%s张”%(url_id,num+1))
# image的类型是mageio.core.util.Image可用下面这一注释行转换为arrary
try:
with warnings.catch_warnings():
warnings.simplefilter(“ignore”)
image = skimage.img_as_float(im).astype(np.float64)
except:
image = skimage.img_as_ubyte(im)
try:
io.imsave(’…\swf\图片单片成品%s_%s.png’ % (url_id, num), image)
except:
pass
图片拼接
def Image_pj(url_id):
IMAGES_PATH = ‘…\swf\图片单片成品\’
ims = [Image.open(IMAGES_PATH +"%s_%s.png"%(url_id,i)) for i,fn in enumerate(listdir(IMAGES_PATH)) if fn.endswith(’.png’)]
width, height = ims[0].size
result = Image.new(ims[0].mode, (width, height * len(ims)))
for i, im in enumerate(ims):
print(“正在拼接%s第%s张图”%(url_id,(i+1)))
result.paste(im, box=(0, i * height))
os.remove(IMAGES_PATH + “%s_%s.png”%(url_id,i))
result.save("…\swf\整图%s.png"%url_id)
pngquant.config("…\pngquant\pngquant.exe", min_quality=1, max_quality=5,tmp_file=“quant.tmp.png”)
pngquant.quant_image("…\swf\整图%s.png"%url_id)
二,第二种
from os import listdir
from PIL import Image
import pngquant
import os, requests, re
import datetime
import os
from subprocess import Popen, PIPE, call
切图片
class SWFExtractor(object):
def init(self, package, outfile, rdpi=None, img_path=None):
self.tool_name = ‘…\swf\swf2img.exe’
self.package = package
self.r = rdpi
self.o = outfile
self.path = img_path
self.is_available = self.check_command(self.tool_name)
self.create_directory_if_not_exists(img_path)
def check_command(self, command):result = Truetry:p = Popen([command], stdout=PIPE, stderr=PIPE)out, err = pmunicate()except:result = Falsefinally:passreturn resultdef create_directory_if_not_exists(self, dir_name): # 创建目录if not os.path.exists(dir_name):os.makedirs(dir_name)def extract_img(self):if not self.is_available:return Falseif not os.path.exists(self.package):print('未找到swf文件 ' + self.package)return Falseif self.r == None:self.r = 189outpath = os.path.join(self.path, self.o)command = [self.tool_name, self.package, '-r', str(self.r), '-o', outpath]p = Popen(command, stderr=PIPE, stdout=PIPE)out, err = pmunicate()if err:print('提取图片错误', err)return Truedef swf2img(self):if not self.extract_img():print('无法提取到图片')return Falseprint("提取图片完成")
更多推荐
只是平时记录使用,只有代码没有讲解,代码是复制就可用但是还有依赖的环境要先下载,视频切割成图片的几种方式和压缩图片以及多张图片拼接成一张
发布评论