最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python如何將圖像音視頻等資源文件隱藏在代碼中(小技巧)

 更新時(shí)間:2020年02月16日 11:23:20   作者:天元浪子  
有朋友問小編使用pyinstaller打包源碼時(shí),因?yàn)榇a中使用了圖像、音頻、視頻等資源文件,無法將程序打包成單一的可執(zhí)行文件,怎么處理呢,下面小編通過代碼給大家介紹Python如何將圖像音視頻等資源文件隱藏在代碼中,感興趣的朋友一起看看吧

下午有同學(xué)Python學(xué)習(xí)群里說,使用pyinstaller打包源碼時(shí),因?yàn)榇a中使用了圖像、音頻、視頻等資源文件,無法將程序打包成單一的可執(zhí)行文件。有沒有方法將這些資源文件按保存在代碼中呢?我想了一下,應(yīng)該是可以的。于是乎,花了一個(gè)小時(shí),寫出了下面的代碼,算是拋磚引玉吧。

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

  • get_fp():返回二進(jìn)制的IO對(duì)象(類文件對(duì)象)
  • save():保存為本地文件
# -*- coding: utf-8 -*-
"""以python模塊形式存儲(chǔ)、使用二進(jìn)制文件"""
import os
import base64
from io import BytesIO
def bin2module(bin_file, py_file=None):
  """二進(jìn)制文件轉(zhuǎn)存為python模塊
  bin_file  - 二進(jìn)制文件名
  py_file   - 生成的模塊文件名,默認(rèn)使用二進(jìn)制文件名,僅更改后綴名
  """
  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__':
  """測(cè)試代碼"""
  # 將圖像文件轉(zhuǎn)存為img_demo.py
  bin2module('forever.png', 'demo.py')
  # 導(dǎo)入剛剛生成的demo模塊
  import demo
  # 用pillow打開圖像,驗(yàn)證demo模塊的get_fp():返回二進(jìn)制的IO對(duì)象(類文件對(duì)象)
  from PIL import Image
  im = Image.open(demo.get_fp())
  im.show()
  # 保存為本地文件,驗(yàn)證demo模塊的save():保存文件
  demo.save('demo_save.png')

補(bǔ)充:下面看下Python實(shí)現(xiàn)將視頻按間隔截取為圖片(附代碼)

輸入:一段視頻。

輸出:取出的視頻幀。

準(zhǔn)備:新建一個(gè)文件夾,用來放置截出來視頻幀。

代碼實(shí)現(xiàn):

import cv2
import argparse
import os
def 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 args
def 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:
      break
if __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)

運(yùn)行起來非常容易,若是出錯(cuò)請(qǐng)檢查 路徑書寫 是否正確。如下是一種絕對(duì)路徑的寫法舉例,前方加 r。

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

總結(jié)

以上所述是小編給大家介紹的Python如何將圖像音視頻等資源文件隱藏在代碼中(小技巧),希望對(duì)大家有所幫助!

相關(guān)文章

  • Python嵌套式數(shù)據(jù)結(jié)構(gòu)實(shí)例淺析

    Python嵌套式數(shù)據(jù)結(jié)構(gòu)實(shí)例淺析

    這篇文章主要介紹了Python嵌套式數(shù)據(jù)結(jié)構(gòu),結(jié)合實(shí)例形式簡(jiǎn)單分析了Python字典與列表元素的嵌套存儲(chǔ)相關(guān)定義與操作技巧,需要的朋友可以參考下
    2019-03-03
  • 簡(jiǎn)單實(shí)現(xiàn)python畫圓功能

    簡(jiǎn)單實(shí)現(xiàn)python畫圓功能

    這篇文章主要為大家詳細(xì)介紹了簡(jiǎn)單實(shí)現(xiàn)python畫圓功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 使用python+whoosh實(shí)現(xiàn)全文檢索

    使用python+whoosh實(shí)現(xiàn)全文檢索

    今天小編就為大家分享一篇使用python+whoosh實(shí)現(xiàn)全文檢索,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 10個(gè)示例帶你掌握python中的元組

    10個(gè)示例帶你掌握python中的元組

    這篇文章主要介紹了python中的元組的相關(guān)資料,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-11-11
  • pyinstaller 3.6版本通過pip安裝失敗的解決辦法(推薦)

    pyinstaller 3.6版本通過pip安裝失敗的解決辦法(推薦)

    這篇文章主要介紹了pyinstaller 3.6版本通過pip安裝失敗的解決辦法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • python數(shù)據(jù)分析之聚類分析(cluster analysis)

    python數(shù)據(jù)分析之聚類分析(cluster analysis)

    聚類分析本身不是一個(gè)特定的算法,而是要解決的一般任務(wù)。它可以通過各種算法來實(shí)現(xiàn),這些算法在理解群集的構(gòu)成以及如何有效地找到它們方面存在顯著差異。這篇文章主要介紹了python數(shù)據(jù)分析之聚類分析(cluster analysis),需要的朋友可以參考下
    2021-11-11
  • 淺談基于Pytest框架的自動(dòng)化測(cè)試開發(fā)實(shí)踐

    淺談基于Pytest框架的自動(dòng)化測(cè)試開發(fā)實(shí)踐

    Pytest是Python的一種易用、高效和靈活的單元測(cè)試框架,本文主要介紹了基于Pytest框架的自動(dòng)化測(cè)試開發(fā)實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Python實(shí)現(xiàn)輕松識(shí)別數(shù)百個(gè)快遞單號(hào)

    Python實(shí)現(xiàn)輕松識(shí)別數(shù)百個(gè)快遞單號(hào)

    當(dāng)我們要寄出很多快遞時(shí),為了及時(shí)反饋物流信息,需要盡快將快遞單號(hào)提取出來。這時(shí)用手動(dòng)去識(shí)別真的太麻煩,所以本文將用Python實(shí)現(xiàn)輕松識(shí)別數(shù)百個(gè)快遞單號(hào),需要的可以參考一下
    2022-06-06
  • Python?Requests?基本使用及Requests與?urllib?區(qū)別

    Python?Requests?基本使用及Requests與?urllib?區(qū)別

    在使用Python爬蟲時(shí),需要模擬發(fā)起網(wǎng)絡(luò)請(qǐng)求,主要用到的庫有requests庫和python內(nèi)置的urllib庫,一般建議使用requests,它是對(duì)urllib的再次封裝,今天通過本文給大家講解Python?Requests使用及urllib區(qū)別,感興趣的朋友一起看看吧
    2022-11-11
  • Python unittest基本使用方法代碼實(shí)例

    Python unittest基本使用方法代碼實(shí)例

    這篇文章主要介紹了Python unittest基本使用方法代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06

最新評(píng)論

芜湖市| 新泰市| 高要市| 沽源县| 林西县| 缙云县| 东平县| 浏阳市| 会东县| 吉隆县| 乾安县| 颍上县| 亳州市| 金坛市| 犍为县| 苍南县| 稻城县| 凤阳县| 玉林市| 阳东县| 承德市| 个旧市| 通河县| 凯里市| 长丰县| 郧西县| 剑川县| 兰州市| 阿克陶县| 长顺县| 彭水| 永春县| 卢氏县| 沂水县| 西贡区| 南靖县| 绥中县| 宜兴市| 祁门县| 南皮县| 达拉特旗|