溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python怎么將圖像音視頻等資源文件隱藏在代碼中

發(fā)布時間:2021-08-06 10:26:41 來源:億速云 閱讀:111 作者:chen 欄目:編程語言

本篇內(nèi)容主要講解“Python怎么將圖像音視頻等資源文件隱藏在代碼中”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“Python怎么將圖像音視頻等資源文件隱藏在代碼中”吧!

這段代碼可以將二進制文件轉(zhuǎn)存為python腳本文件,供其他腳本引用。代碼最后附有使用的例子,演示用的圖片可以隨便照一張。除了轉(zhuǎn)存二進制數(shù)據(jù),還提供了兩個方法:

get_fp():返回二進制的IO對象(類文件對象)save():保存為本地文件

# -*- coding: utf-8 -*-"""以python模塊形式存儲、使用二進制文件"""import osimport base64from io import BytesIOdef bin2module(bin_file, py_file=None):  """二進制文件轉(zhuǎn)存為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__':  """測試代碼"""  # 將圖像文件轉(zhuǎn)存為img_demo.py  bin2module('forever.png', 'demo.py')  # 導(dǎo)入剛剛生成的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實現(xiàn)將視頻按間隔截取為圖片(附代碼)

輸入:一段視頻。

輸出:取出的視頻幀。

準備:新建一個文件夾,用來放置截出來視頻幀。

代碼實現(xiàn):

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'])

到此,相信大家對“Python怎么將圖像音視頻等資源文件隱藏在代碼中”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI