Python怎么将图像音视频等资源文件隐藏在代码中
创始人
2024-12-20 08:43:06
0次

这段代码可以将二进制文件转存为python脚本文件,供其他脚本引用。代码最后附有使用的例子,演示用的图片可以随便照一张。除了转存二进制数据,还提供了两个方法:

get_fp():返回二进制的IO对象(类文件对象)save():保存为本地文件

# -*- coding: utf-8 -*-"""以python模块形式存储、使用二进制文件"""import osimport base64from io import BytesIOdef bin2module(bin_file, py_file=None):  """二进制文件转存为python模块  bin_file  - 二进制文件名  py_file   - 生成的模块文件名,默认使用二进制文件名,仅更改后缀名  """  fpath, fname = os.path.split(bin_file)  fn, ext = os.path.splitext(fname)  if not py_file:    py_file = os.path.join(fpath, '%s.py'%fn)  with open(bin_file, 'rb') as fp:    content = fp.read()  content = base64.b64encode(content)  content = content.decode('utf8')  with open(py_file, 'w') as fp:    fp.write('# -*- coding: utf-8 -*-\n\n')    fp.write('import base64\n')    fp.write('from io import BytesIO\n\n')    fp.write('content = """%s"""\n\n'%content)    fp.write('def get_fp():\n')    fp.write('  return BytesIO(base64.b64decode(content.encode("utf8")))\n\n')    fp.write('def save(file_name):\n')    fp.write('  with open(file_name, "wb") as fp:\n')    fp.write('    fp.write(base64.b64decode(content.encode("utf8")))\n')if __name__ == '__main__':  """测试代码"""  # 将图像文件转存为img_demo.py  bin2module('forever.png', 'demo.py')  # 导入刚刚生成的demo模块  import demo  # 用pillow打开图像,验证demo模块的get_fp():返回二进制的IO对象(类文件对象)  from PIL import Image  im = Image.open(demo.get_fp())  im.show()  # 保存为本地文件,验证demo模块的save():保存文件  demo.save('demo_save.png')

补充:下面看下Python实现将视频按间隔截取为图片(附代码)

输入:一段视频。

输出:取出的视频帧。

准备:新建一个文件夹,用来放置截出来视频帧。

代码实现:

import cv2import argparseimport osdef parse_args():  """  Parse input arguments  """  parser = argparse.ArgumentParser(description='Process pic')  parser.add_argument('--input', help='video to process', dest='input', default=None, type=str)  parser.add_argument('--output', help='pic to store', dest='output', default=None, type=str)  #default为间隔多少帧截取一张图片  parser.add_argument('--skip_frame', dest='skip_frame', help='skip number of video', default=100, type=int) #此处可更改提取帧的间隔  args = parser.parse_args(['--input','','--output',''])  #此处添加路径,input为输入视频的路径 ,output为输出存放图片的路径  return argsdef process_video(i_video, o_video, num):  cap = cv2.VideoCapture(i_video)  num_frame = cap.get(cv2.CAP_PROP_FRAME_COUNT)  expand_name = '.jpg'  if not cap.isOpened():    print("Please check the path.")  cnt = 0  count = 0  while 1:    ret, frame = cap.read()    cnt += 1    # how    # many    # frame    # to    # cut    if cnt % num == 0:      count += 1      cv2.imwrite(os.path.join(o_video, str(count) + expand_name), frame)    if not ret:      breakif __name__ == '__main__':  args = parse_args()  if not os.path.exists(args.output):    os.makedirs(args.output)  print('Called with args:')  print(args)  process_video(args.input, args.output, args.skip_frame)

运行起来非常容易,若是出错请检查 路径书写 是否正确。如下是一种绝对路径的写法举例,前方加 r。

args = parser.parse_args(['--input', r'F:\data_video\IMG_4395.MOV', '--output', r'F:data_rgb_\video_to_frame'])

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...