1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| from PIL import Image import getopt, sys import os import cv2
img_type_list = ["jpg", "jpeg", "bmp", "gif", "tiff", "png", "raw", "psd"] vedio_type_list = ["mp4", "mpeg", "mpg", "avi", "mov", "wmv", "mkv", "rmvb", "flv"]
def video2pic(video, img): print("video2pic: {} to {}".format(video, img)) cap = cv2.VideoCapture(video) # cap.set(1, int(cap.get(7)/2)) cap.set(1,2) rval, frame = cap.read() if rval: cv2.imwrite(img, frame) cap.release()
def thumbnail(in_file,out_file,size): print("thumbnail: {} to {}, size: {}".format(in_file, out_file, str(size))) im = Image.open(in_file) im.thumbnail(size) im.save(out_file)
def usage(): pass
def main(): try: opts, args = getopt.getopt(sys.argv[1:], "ht:i:o:s:", ["help", "in=", "out=", "size="]) except getopt.GetoptError as err: print(str(err)) usage() sys.exit(2) _in = None _out = None _size = 96
for o, a in opts: if o in ("-h", "--help"): usage() sys.exit() elif o in ("-i", "--in"): _in = a elif o in ("-o", "--out"): _out = a elif o in ("-s", "--size"): _size = int(a) else: assert False, "unhandled option"
if (None == _in) or (not os.path.exists(_in)): print("in is not exists") sys.exit(2) if (None == _out): print("out is not exists") sys.exit(2) if not os.path.exists(_out): print("mkdir out dir") os.mkdir(_out)
size = (_size, _size)
if os.path.isdir(_in): files = os.listdir(_in) for f in files: src_file_path = _in+"/"+f if os.path.isfile(src_file_path): file_type = src_file_path.split(".")[-1].lower() if src_file_path.split(".")[-1].lower() in vedio_type_list: thumbnail_file_path = _out+"/"+f+".jpg" video2pic(src_file_path, thumbnail_file_path) thumbnail(thumbnail_file_path, thumbnail_file_path, size) elif src_file_path.split(".")[-1].lower() in img_type_list: thumbnail_file_path = _out+"/"+f thumbnail(src_file_path, thumbnail_file_path, size) else: print("not img or vedio file: " + src_file_path) else: print("in need be a dir.")
if __name__ == "__main__": main()
|