精华内容
下载资源
问答
  • def make_gif(): buff = [] for filename in os.listdir("/home/dfy/Speech_Enhancement/angle_images"): img3 = cv2.imread("/home/dfy/Speech_Enhancement/angle_images/"+...
  • licecap录屏生成gif

    2020-10-14 23:05:57
    一个录屏软件,生成gif。可用于录屏后生成gif放置在文章中。 一个录屏软件,生成gif。可用于录屏后生成gif放置在文章中。 一个录屏软件,生成gif。可用于录屏后生成gif放置在文章中。
  • GIF生成器,可以轻松生成GIF动态图 完美 控制大小 和长宽比
  • 生成GIF图片

    2015-11-16 23:30:16
    生成GIF图片
  • 截屏生成Gif.zip

    2021-03-18 11:24:55
    window截屏生成gif
  • 截屏 生成 gif动画

    2017-09-13 15:33:43
    自己写的一个截屏生成gif的软件,效果还不错 自己写的一个截屏生成gif的软件,效果还不错 自己写的一个截屏生成gif的软件,效果还不错 自己写的一个截屏生成gif的软件,效果还不错 喜欢的可以下载!~
  • 录屏工具licecpp生成gif

    2018-04-08 22:41:59
    录屏工具licecpp生成gif 录屏工具licecpp生成gif 录屏工具licecpp生成gif
  • matplotlib包和gif包生成gif动画对比

    万次阅读 2020-12-22 23:12:10
    使用matplotlib生成gif动画的方法有很多,一般常规使用matplotlib的animation模块的FuncAnimation函数实现。 在matplotlib官网看到了第三方动画包gif的介绍。 gif包概述 gif包是支持 Altair, matplotlib和Plotly的...

    使用matplotlib生成gif动画的方法有很多,一般常规使用matplotlibanimation模块的FuncAnimation函数实现。
    matplotlib官网看到了第三方动画包gif的介绍。

    gif包概述

    gif包是支持 Altair, matplotlibPlotly的动画扩展。
    gif依赖PIL,即pillow,要求Pillow>=7.1.2
    安装gif包,pip install gif

    动画原理

    所有动画都是由帧(frame)构成的,一帧就是一幅静止的画面,连续的帧就形成动画。我们通常说帧数,简单地说,就是在1秒钟时间里传输的图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次,通常用fps(Frames Per Second)表示。
    制作动画的关键:如何生成帧,每秒多少帧。

    gif包解读

    gif包非常简洁,只有一个单独的文件gif.py,文件主要包含options类、framessave两个函数。

    options

    提供精简版 的Altair, matplotlibPlotly的保存或输出设置。以matplotlib为例,提供以下设置。

    • dpi (int): The resolution in dots per inch
    • facecolor (colorspec): The facecolor of the figure
    • edgecolor (colorspec): The edgecolor of the figure
    • transparent (bool): If True, the axes patches will all be transparent

    设置方法:gif.options.matplotlib["dpi"] = 300
    原理:options在构造函数中创建matplotlib字典保存配置,随后传递给底层的matplotlib包。

    frames函数

    装饰器函数,通过对应包编写自定义绘图函数生成单帧图像。

    save函数

    根据帧序列生成动画。

    def save(frames, path, duration=100, unit="milliseconds", between="frames", loop=True):
        """Save decorated frames to an animated gif.
        - frames (list): collection of frames built with the gif.frame decorator
        - path (str): filename with relative/absolute path
        - duration (int/float): time (with reference to unit and between)
        - unit {"ms" or "milliseconds", "s" or "seconds"}: time unit value
        - between {"frames", "startend"}: duration between "frames" or the entire gif ("startend")
        - loop (bool): infinitely loop the animation
    

    frames即根据@gif.frame装饰的绘图函数生成的帧的序列,此处根据需要自定义。
    duration即持续时间,由单位unit和模式between决定,默认为frames为帧间的时间间隔
    unit即持续时间单位,支持毫秒和秒,默认为毫秒。
    between即持续时间计算模式,默认framesduration为帧之间的时间间隔,startend模式时duration=duration /len(frames),即duration为所有帧—整个动画的持续时间。

    gif包生成gif动画实践

    import random
    from matplotlib import pyplot as plt
    import gif
    
    # 构造数据
    x = [random.randint(0, 100) for _ in range(100)]
    y = [random.randint(0, 100) for _ in range(100)]
    #设置选项
    gif.options.matplotlib["dpi"] = 300
    #使用gif.frame装饰器构造绘图函数,即如何生成静态的帧
    @gif.frame
    def plot(i):
        xi = x[i*10:(i+1)*10]
        yi = y[i*10:(i+1)*10]
        plt.scatter(xi, yi)
        plt.xlim((0, 100))
        plt.ylim((0, 100))
    # 构造帧序列frames,即把生成动画的所有帧按顺序放在列表中
    frames = []
    for i in range(10):
        frame = plot(i)
        frames.append(frame)
    # 根据帧序列frames,动画持续时间duration,生成gif动画
    gif.save(frames, 'example.gif', duration=3.5, unit="s", between="startend")
    

    以心形曲线为例比较gif包和animation模块实现动画的差异

    gif包的实现方式

    import numpy as np
    import gif
    from matplotlib import pyplot as plt
    
    t = np.linspace(0, 6, 100)
    x = 16 * np.sin(t) ** 3
    y = 13 * np.cos(t) - 5 * np.cos(2 * t) - 2 * np.cos(3 * t) - np.cos(4 * t)
    
    @gif.frame
    def plot_love(x, y):
        plt.figure(figsize=(5, 3), dpi=100)
        plt.scatter(x, y, 60, c="r", alpha=0.7, marker=r"$\heartsuit$")
        plt.axis("off")
        
    frames = []
    for i in range(1, len(x)):
        of = plot_love(x[:i], y[:i])
        frames.append(of)
    
    gif.save(frames, "love.gif", duration=80)
    

    matplotlib 常规FuncAnimation函数实现方式

    from matplotlib import pyplot as plt
    import matplotlib.animation as animation
    import numpy as np
    
    t = np.linspace(0, 6, 100)
    x = 16 * np.sin(t) ** 3
    y = 13 * np.cos(t) - 5 * np.cos(2 * t) - 2 * np.cos(3 * t) - np.cos(4 * t)
    data=[i for i in zip(x,y)]
    
    def plot_love(data):
        x, y = data
        plt.scatter(x, y, 60, c="r", alpha=0.7, marker=r"$\heartsuit$")
    
    fig=plt.figure(figsize=(5, 3), dpi=100)
    plt.axis("off")
    animator = animation.FuncAnimation(fig, plot_love, frames=data, interval=80)
    animator.save("love.gif", writer='pillow')
    

    matplotlib底层PillowWriter类实现方式

    from matplotlib import pyplot as plt
    import matplotlib.animation as animation
    import numpy as np
    
    t = np.linspace(0, 6, 100)
    x = 16 * np.sin(t) ** 3
    y = 13 * np.cos(t) - 5 * np.cos(2 * t) - 2 * np.cos(3 * t) - np.cos(4 * t)
    
    def plot_love(x,y):
        plt.scatter(x, y, 60, c="r", alpha=0.7, marker=r"$\heartsuit$")
    
    fig=plt.figure(figsize=(5, 3), dpi=100)
    plt.axis("off")
    
    writer = animation.PillowWriter(fps=15)
    with writer.saving(fig, "love1.gif"):
        for i in range(1, len(x)):
            of = plot_love(x[i], y[i])
            writer.grab_frame()
    

    比较结果

    通过比较可知gif包的实现方式和matplotlib中利用PillowWriter实现方式类似,更偏底层一些,这样遇到比较复杂的绘图时更灵活。

    展开全文
  • PHP生成Gif图片验证码

    2020-10-26 19:11:29
    验证码在好多地方都要用到,这里提供一个新开发的安全验证码类,支持生成Gif图片验证码(带噪点,干扰线,网格,随机色背景,随机自定义字体,倾斜,Gif动画)。从中还可以学到如何用PHP生成Gif图片的方法。
  • 录制屏幕生成GIF.zip

    2021-01-06 20:57:31
    录制屏幕生成GIF.zip
  • ScreenToGif 2.1 屏幕截图生成GIF 
  • java生成gif

    2013-09-06 18:01:42
    java生成gif图片源代码类 拿来即可用的
  • gnuplot生成GIF图代码

    2018-06-12 14:29:16
    gnuplot生成GIF代码脚本
  • Python 生成 GIF 文件

    千次阅读 2018-03-03 19:46:35
    Python 生成 GIF 文件 使用 Python 合成 gif 动态图,程序如下: 原图片需具有相同大小 import imageio ...def create_gif(gif_name, path, duration = ... 生成gif文件,原始图片仅支持png格式 gif_name :...

    Python 生成 GIF 文件

    使用 Python 合成 gif 动态图,程序如下:

    原图片需具有相同大小

    import imageio
    import cv2
    import os
    
    
    def compress_image(im, max_size=1000000):
        im_shape = list(im.shape)
        while im_shape[0] * im_shape[1] > max_size:
            im_shape[0] //= 2
            im_shape[1] //= 2
        im = cv2.resize(im, (im_shape[1], im_shape[0]))
        return im
    
    
    def create_gif(gif_name, pic_path, duration=0.3, compress=True):
        """
        生成gif文件
        gif_name : 字符串,所生成的 gif 文件名,带 .gif 后缀
        pic_path :      需要合成为 gif 的图片所在路径
        duration :  gif 图像时间间隔
        compress: 是否压缩图像
        """
        pic_suffixes = {'.png', '.jpg', '.jpeg', '.bmp'}
        frames = []
        png_files = sorted(os.listdir(pic_path))
        image_list = [os.path.join(pic_path, f) for f in png_files]
        for image_name in image_list:
            if os.path.splitext(image_name.lower())[-1] in pic_suffixes:
                print('add picture from:', image_name)
                im = imageio.imread(image_name)
                if compress:
                    # 图片太大则对图片压缩
                    im = compress_image(im)
                frames.append(im)
        # 保存为 gif
        if frames:
            print('saving gif to:', gif_name)
            imageio.mimsave(gif_name, frames, 'GIF', duration=duration)
        else:
            print('There is no supporting picture in the path', pic_path,
                  '. Only support the pictures with suffixes by', str(pic_suffixes))
    
    
    def main():
        gif_name = 'created_gif.gif'
        pic_path = 'org_pictures'   # 指定文件路径
        duration = 0.5
        create_gif(gif_name, pic_path, duration)
    
    
    if __name__ == "__main__":
        main()
    
    展开全文
  • GifCam(生成Gif)

    2016-07-19 11:25:09
    GifCam(生成Gif)
  • 秋天视频批量生成GIF V1.1 可以批量吧 视频转换生成gif
  • 秋天视频批量生成GIF V1.1 可以批量吧 视频转换生成gif
  • 生成GIf图片

    2012-08-30 15:14:49
    选择一个文件夹的多个图片,格式可以为Bmp,jpg等,然后把多个图片,生成GIF图片
  • ios-生成gif图片.zip

    2019-07-11 19:50:46
    多张照片生成gif图片
  • 用图片生成gif

    2015-01-19 14:24:05
    用图片生成gif,封装了一下,直接调用就行了。参数包括图片数组、生成的目标文件地址、两张图片间的时间间隔。
  • VS2013; 基于gif.h的桌面录像; 选定桌面区域 录像生成gif文件;
  • MATLAB生成Gif图片程序源代码
  • Python快速生成gif

    万次阅读 多人点赞 2018-12-20 23:00:37
    前言 gif图就是动态图,它的原理和视频有点类似...imageio提供了很多方便读写图片的接口、包括读取网络图片、读取视频、生成gif图等。imageio提供许多的接口,imageio API,和示例程序 imageio安装 pip install i...

    前言

    gif图就是动态图,它的原理和视频有点类似,也是通过很多静态图片合成的.本篇文章主要介绍,如何利用Python快速合成gif图,主要利用Python的第三方库imageio

    imageio介绍

    imageio提供了很多方便读写图片的接口、包括读取网络图片、读取视频、生成gif图等。imageio提供许多的接口,imageio API,和示例程序

    imageio安装

    pip install imageio
    

    合成gif图

    import imageio
    def compose_gif():
        img_paths = ["img/1.jpg","img/2.jpg","img/3.jpg","img/4.jpg"
        ,"img/5.jpg","img/6.jpg"]
        gif_images = []
        for path in img_paths:
            gif_images.append(imageio.imread(path))
        imageio.mimsave("test.gif",gif_images,fps=1)
    

    在这里插入图片描述
    通过fps参数可以控制合成gif图片播放图片的速度和视频的播放帧率是一样的,fps参数越大播放的速率越大,fps越小播放的速度越慢.

    读取特殊url图片

    • 读取imageio的示例图片
    import imageio
    import matplotlib.pyplot as plt
    
    def read_special_url_image():
        img = imageio.imread("imageio:chelsea.png")
        plt.imshow(img)
        plt.show()
    
    • 读取url的网络图片
        url = 'http://upload.wikimedia.org/wikipedia/
        commons/d/de/Wikipedia_Logo_1.0.png'
        img = imageio.imread(url)
    

    在这里插入图片描述
    再使用url读取图片的时候可能会报seek的错误,这时候可以改成下面的形式

        url = "https://timgsa.baidu.com/timg?image&quality=80&size=
        b9999_10000&sec=1545324012100&di=77a4ba3d60cdfc60
        d161bd6ed97c2319&imgtype=0&src=http%3A%2F%2Fwww.hxzyt
        j.com%2Fthemes%2Ftheme_3%2Fpc%2Fimages%2Fpython%2Fimg_01.jpg"
        img = imageio.imread(imageio.core.urlopen(url).read(), '.jpg')
    

    在这里插入图片描述

    截图和读取粘贴板的图片

        #截屏
        img = imageio.imread("<screen>")
        #读取粘贴板的图片
        img = imageio.imread("<clipboard>")
    

    读取视频

    def get_video_per_frame():
        reader = imageio.get_reader("test.mp4")
        for i,im in enumerate(reader):
            print("Mean of frame %i is %1.1f"%(i,im.mean()))
    

    在这里插入图片描述
    在使用imageio读取视频的时候可能会报上面的错误,提示需要安装ffmpeg,可以根据提示进行安装即可.除此之外,imageio还提供了许多方便的接口,有兴趣的可以去了解一下.

    展开全文
  • 由png生成Gif

    2020-11-18 16:57:08
    由所获得的图片生成Gif的主要操作流程: AnimatedGifEncoder e = new AnimatedGifEncoder(); e.setRepeat(0); e.start(gif); //gif为String 格式应为xxx目录下后缀名为.gif的完全路径 如:D:\desktop\2.gif //这...

    由所获得的图片生成Gif的主要操作流程:

    AnimatedGifEncoder e = new AnimatedGifEncoder(); 
    e.setRepeat(0);
    e.start(gif);	 
    //gif为String 格式应为xxx目录下后缀名为.gif的完全路径 如:D:\desktop\2.gif
    //这句语句会在对应位置生成一个gif文件并且对其进行编辑
    BufferedImage src = (BufferedImage)ImageIO.read(png);
    e.setDelay(playtime);
    e.addFrame(src);
    //这串语句通常在一个循环里,png为png图像文件的路径,playtime为gif播放时每张图片的持续时间,addFrame就是将src所获取的图像加到帧中
    
    

    上述由AnimatedGifEncoder,LZWEncoder,NeuQuant三个类及其方法实现。

    程序中包含对目录中文件的排序:

    List<File> fl = Arrays.asList(new File(pic).listFiles());
    Collections.sort(fl, new Comparator<File>() {
    			@Override
    			public int compare(File o1, File o2) {
    				return o1.getName().compareTo(o2.getName());
    			}
    		});
    
    

    首先fl为按路径pic生成的File数组,利用Collections类下的sort方法,自己手动编辑一种排序方法并用于fl的排序。(此方法有漏洞)

    工具齐全之后,开始着手实际实现:我们的目的是由用户输入一个获取png的路径,以及一个生成gif的目录路径,生成的gif名称为该gif所需要的png图片的获取目录文件夹名称。

    首先获取pic路径下的所有文件及文件夹生成一个数组,对其中文件及文件夹操作不同。
    文件夹:采取当前函数递归调
    文件:直接利用生成gif的工具即可。

    编程中遇到的问题:
    StringBuilder newgifBuilder = new StringBuilder(gif).append("\\").append(new File(pic).getName());
    在获取到gif路径,调用函数前,需要在gif路径后增加pic文件夹名称
    gif = gif.replace(new File(gif).getName(), new File(pic).getName());
    因为递归后获取图片的目录改变,所生成的gif名称也应该改变

    全部代码:

    package gif;
    
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.util.Arrays;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    import java.util.Scanner;
    
    import javax.imageio.ImageIO;
    
    public class Gif {
    	public static void main(String[] args) throws IOException {
    		String pic;
    		String gif;
    		String bool;
    		int time = 0;
    		int playtime = 200;
    		Scanner sc = new Scanner(System.in);
    		
    		System.out.println("png路径:");
    		pic = sc.next();
    		
    		System.out.println("是否改变生成gif的路径(默认当前文件夹)(Y/N):");
    		bool = sc.next();
    		
    		if ("Y".equals(bool)) {
    			System.out.println("新路径:");
    			gif = sc.next();
    		} else {
    			gif = pic;
    		}
    		sc.close();	
    		
    		StringBuilder newgifBuilder = new StringBuilder(gif).append("\\").append(new File(pic).getName());
    		gif = newgifBuilder.toString();
    		
    		jpgToGif(pic, gif, playtime, time, bool);
    		System.out.println("done");
    	}
    	
    	private static void jpgToGif(String pic, String gif, int playtime, int time, String bool) throws IOException {
    		AnimatedGifEncoder e = new AnimatedGifEncoder();
    		List<File> fl = Arrays.asList(new File(pic).listFiles());
    		if (0 != time) {
    			gif = gif.replace(new File(gif).getName(), new File(pic).getName());
    		}
    		
    		StringBuilder newgifBuilder = new StringBuilder(gif).append(".gif");
    		String gp = newgifBuilder.toString();
    		
    		Collections.sort(fl, new Comparator<File>() {
    			@Override
    			public int compare(File o1, File o2) {
    				return o1.getName().compareTo(o2.getName());
    			}
    		});
    		
    		e.setRepeat(0);
    		e.start(gp);
    		for(File sf : fl) {
    			if (sf.isDirectory()) {
    				StringBuilder newpicpath = new StringBuilder(pic).append("\\").append(sf.getName());
    				String newpic = newpicpath.toString();
    				time++;
    				jpgToGif(newpic, gp, playtime, time, bool);
    			}
    			if (sf.getName().endsWith(".png")) {
    				BufferedImage src = (BufferedImage)ImageIO.read(sf);
    				e.setDelay(playtime);
    				e.addFrame(src);
    			}
    		}
    	}
    }
    
    
    展开全文
  • 视频直接生成gif

    2014-08-09 10:01:06
    视频直接生成gif,真心的不错,生成速度很快,我测试过很多,就这个最好。图片质量可以设定,操作简单。时间也可以设定。
  • 生成GIF录屏的小软件

    2019-01-12 13:44:18
    解压后直接运行,可以调整录制窗口的大小,生成gif图片,并且进行简单的编辑。
  • Java根据图片生成GIF动图-附件资源
  • python生成 Gif 方法汇总

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,853
精华内容 1,941
关键字:

生成gif