Python来做图像处理以及视音频文件分离和合成

系统 1938 0
一、简介

Imageio是一个Python库,提供了一个简单的界面来读取和写入各种图像数据,包括动画图像,视频,体积数据和科学格式。它是跨平台的,运行在Python 2.7和3.4+上,易于安装。

作为用户,您只需要记住一些功能:

  • imread()和imwrite() - 用于单个图像
  • mimread()和mimwrite() - 用于图像系列(动画)
  • volread()和volwrite() - 用于体积图像数据
  • get_reader()和get_writer() - 用于更多控制(例如流式传输)
  • 有关更多信息,请参阅文档。

通过一系列功能简单的界面。
使用conda或pip 易于安装。
几乎没有依赖(只有Numpy和Pillow)。
纯Python,运行在Python 2.7,3.4 +和Pypy上
跨平台,在Windows,Linux,OS X上运行(Raspberry Pi计划)
许多支持的格式。
可以读取文件名,文件对象,zip文件,http / ftp和原始字节。
使用插件轻松扩展。
通过许多测试和持​​续集成来维护代码质量。

Imageio有一个相对简单的核心,为不同的文件格式提供通用接口。这个核心负责从不同的源(如http)读取,并为插件公开一个简单的API来访问原始数据。所有文件格式都在插件中实现。可以轻松注册其他插件。

一些插件依赖于外部库(例如ffmpeg)。Imageio提供了一种通过一个函数调用下载这些函数的方法,并在需要时提示用户这样做。下载缓存在您的appdata目录中,这可以保持imageio轻松和可扩展。

Imageio提供各种图像格式,包括科学格式。任何有关实现更多格式的帮助都非常受欢迎!

代码库遵循PEP8样式指南的(子集)。我们力求最大的测试覆盖率(核心为100%,每个插件为> 95%)。

二、代码总结:
            
              
                import
              
               subprocess

              
                import
              
               imageio

              
                import
              
               os

              
                from
              
               PIL 
              
                import
              
               Image



              
                def
              
              
                video2mp3
              
              
                (
              
              file_name
              
                )
              
              
                :
              
              
                """
    将视频转为音频
    :param file_name: 传入视频文件的路径
    :return:
    """
              
              
    outfile_name 
              
                =
              
               file_name
              
                .
              
              split
              
                (
              
              
                '.'
              
              
                )
              
              
                [
              
              
                0
              
              
                ]
              
              
                +
              
              
                '.mp3'
              
              
    subprocess
              
                .
              
              call
              
                (
              
              
                'ffmpeg -i '
              
              
                +
              
               file_name
                    
              
                +
              
              
                ' -f mp3 '
              
              
                +
              
               outfile_name
              
                ,
              
               shell
              
                =
              
              
                True
              
              
                )
              
              
                def
              
              
                video_add_mp3
              
              
                (
              
              file_name
              
                ,
              
               mp3_file
              
                )
              
              
                :
              
              
                """
     视频添加音频
    :param file_name: 传入视频文件的路径
    :param mp3_file: 传入音频文件的路径
    :return:
    """
              
              
    outfile_name 
              
                =
              
               file_name
              
                .
              
              split
              
                (
              
              
                '.'
              
              
                )
              
              
                [
              
              
                0
              
              
                ]
              
              
                +
              
              
                '-txt.mp4'
              
              
    subprocess
              
                .
              
              call
              
                (
              
              
                'ffmpeg -i '
              
              
                +
              
               file_name
                    
              
                +
              
              
                ' -i '
              
              
                +
              
               mp3_file 
              
                +
              
              
                ' -strict -2 -f mp4 '
              
              
                +
              
               outfile_name
              
                ,
              
               shell
              
                =
              
              
                True
              
              
                )
              
              
                def
              
              
                compose_gif
              
              
                (
              
              file_path
              
                )
              
              
                :
              
              
                """
        将静态图片转为gif动图
        :param file_path: 传入图片的目录的路径
        :return:
    """
              
              
    img_paths 
              
                =
              
              
                sorted
              
              
                (
              
              
                [
              
              
                int
              
              
                (
              
              p
              
                [
              
              
                3
              
              
                :
              
              
                -
              
              
                4
              
              
                ]
              
              
                )
              
              
                for
              
               p 
              
                in
              
               os
              
                .
              
              listdir
              
                (
              
              file_path
              
                )
              
              
                if
              
               os
              
                .
              
              path
              
                .
              
              splitext
              
                (
              
              p
              
                )
              
              
                [
              
              
                1
              
              
                ]
              
              
                ==
              
              
                ".png"
              
              
                ]
              
              
                )
              
              
    img_paths 
              
                =
              
               img_paths
              
                [
              
              
                :
              
              
                int
              
              
                (
              
              
                len
              
              
                (
              
              img_paths
              
                )
              
              
                /
              
              
                3.6
              
              
                )
              
              
                ]
              
              
    gif_images 
              
                =
              
              
                [
              
              
                ]
              
              
                for
              
               path 
              
                in
              
               img_paths
              
                :
              
              
        gif_images
              
                .
              
              append
              
                (
              
              imageio
              
                .
              
              imread
              
                (
              
              
                '{0}/out{1}.png'
              
              
                .
              
              
                format
              
              
                (
              
              file_path
              
                ,
              
               path
              
                )
              
              
                )
              
              
                )
              
              
    imageio
              
                .
              
              mimsave
              
                (
              
              
                "test.gif"
              
              
                ,
              
               gif_images
              
                ,
              
               fps
              
                =
              
              
                30
              
              
                )
              
              
                def
              
              
                compress_png
              
              
                (
              
              file_path
              
                )
              
              
                :
              
              
                """
        将gif动图转为每张静态图片
        :param file_path: 传入gif文件的路径
        :return:
    """
              
              
    img_paths 
              
                =
              
              
                [
              
              p 
              
                for
              
               p 
              
                in
              
               os
              
                .
              
              listdir
              
                (
              
              file_path
              
                )
              
              
                if
              
               os
              
                .
              
              path
              
                .
              
              splitext
              
                (
              
              p
              
                )
              
              
                [
              
              
                1
              
              
                ]
              
              
                ==
              
              
                ".png"
              
              
                ]
              
              
                for
              
               filename 
              
                in
              
               img_paths
              
                :
              
              
                with
              
               Image
              
                .
              
              
                open
              
              
                (
              
              
                '{0}/{1}'
              
              
                .
              
              
                format
              
              
                (
              
              file_path
              
                ,
              
               filename
              
                )
              
              
                )
              
              
                as
              
               im
              
                :
              
              
            width
              
                ,
              
               height 
              
                =
              
               im
              
                .
              
              size
            new_width 
              
                =
              
              
                150
              
              
            new_height 
              
                =
              
              
                int
              
              
                (
              
              new_width 
              
                *
              
               height 
              
                *
              
              
                1.0
              
              
                /
              
               width
              
                )
              
              
            resized_im 
              
                =
              
               im
              
                .
              
              resize
              
                (
              
              
                (
              
              new_width
              
                ,
              
               new_height
              
                )
              
              
                )
              
              
            output_filename 
              
                =
              
               filename
            resized_im
              
                .
              
              save
              
                (
              
              
                '{0}/{1}'
              
              
                .
              
              
                format
              
              
                (
              
              file_path
              
                ,
              
               output_filename
              
                )
              
              
                )
              
              
                if
              
               __name__ 
              
                ==
              
              
                '__main__'
              
              
                :
              
              
                # video2mp3(file_name='data-a.mp4')
              
              
    video_add_mp3
              
                (
              
              file_name
              
                =
              
              
                'swap-data-a.mp4'
              
              
                ,
              
               mp3_file
              
                =
              
              
                'data-a.mp3'
              
              
                )
              
              
                # compose_gif(file_path='merged')
              
              
                # compress_png(file_path='merged')
              
            
          

更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论