资讯专栏INFORMATION COLUMN

android使用多张图片合成gif文件

yedf / 472人阅读

摘要:之前有遇到过一个要用多张图片合成图的场景,当时是搜索了好久,也没有发现有相关的使用记录。后来找到了实现方式,特此记录。使用了上该,代码链接见页尾。主要代码如下生成图保存文件名帧之间间隔的时间设置生成的开始播放时间。

之前有遇到过一个要用多张图片合成gif图的场景,当时是搜索了好久,也没有发现有相关的使用记录。后来找到了实现方式,特此记录。
使用了Github上该project:android-gif-encoder,代码链接见页尾。

主要代码如下:

/**
 * 生成gif图
 *
 * @param file_name 保存文件名
 * @param delay     帧之间间隔的时间
 */
private void createGif(String file_name, int delay) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    AnimatedGifEncoder localAnimatedGifEncoder = new AnimatedGifEncoder();
    localAnimatedGifEncoder.start(baos);//start
    localAnimatedGifEncoder.setRepeat(0);//设置生成gif的开始播放时间。0为立即开始播放
    localAnimatedGifEncoder.setDelay(delay);
    if (pics.isEmpty()) {
        localAnimatedGifEncoder.addFrame(BitmapFactory.decodeResource(getResources(), R.drawable.pic_1));
        localAnimatedGifEncoder.addFrame(BitmapFactory.decodeResource(getResources(), R.drawable.pic_2));
        localAnimatedGifEncoder.addFrame(BitmapFactory.decodeResource(getResources(), R.drawable.pic_3));
    } else {
        for (int i = 0; i < pics.size(); i++) {
            // Bitmap localBitmap = ThumbnailUtils.extractThumbnail(BitmapFactory.decodeFile(pics.get(i)), 512, 512);
            localAnimatedGifEncoder.addFrame(BitmapFactory.decodeFile(pics.get(i)));
        }
    }
    localAnimatedGifEncoder.finish();//finish

    File file = new File(Environment.getExternalStorageDirectory().getPath() + "/GIFMakerDemo");
    if (!file.exists()) file.mkdir();
    String path = Environment.getExternalStorageDirectory().getPath() + "/GIFMakerDemo/" + file_name + ".gif";
    Log.d(TAG, "createGif: ---->" + path);

    try {
        FileOutputStream fos = new FileOutputStream(path);
        baos.writeTo(fos);
        baos.flush();
        fos.flush();
        baos.close();
        fos.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

    gif_image.setImageURI(Uri.parse(path));
    Toast.makeText(MainActivity.this, "Gif已生成。保存路径:
" + path, Toast.LENGTH_LONG).show();
}

需要源码的同学看这里

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/12604.html

相关文章

  • 图像处理 - ImageMagick 简单介绍与案例

    摘要:是一款创建编辑合成,转换图像的命令行工具。上面两条三次贝塞尔曲线的坐标分别表示起始点,起始点的控制点,结束点的控制点,结束点。 在客户端我们可以用 PhotoShop 等 GUI 工具处理静态图片或者动态 GIF 图片,不过在服务器端对于 WEB 应用程序要处理图片格式转换,缩放裁剪,翻转扭曲,PDF解析等操作, GUI 软件就很难下手了,所以此处需要召唤命令行工具来帮我们完成这些事。...

    youkede 评论0 收藏0
  • 图像处理 - ImageMagick 简单介绍与案例

    摘要:是一款创建编辑合成,转换图像的命令行工具。上面两条三次贝塞尔曲线的坐标分别表示起始点,起始点的控制点,结束点的控制点,结束点。 在客户端我们可以用 PhotoShop 等 GUI 工具处理静态图片或者动态 GIF 图片,不过在服务器端对于 WEB 应用程序要处理图片格式转换,缩放裁剪,翻转扭曲,PDF解析等操作, GUI 软件就很难下手了,所以此处需要召唤命令行工具来帮我们完成这些事。...

    Eidesen 评论0 收藏0
  • Android保存多张图片到本地

    摘要:如果用户点击保存按钮,则保存若干张图片到本地。这个时候,如果点击保存控件,则循环遍历图片资源集合保存到本地文件夹。如果是线程套线程的话,第一个子线程结束了,嵌套在该子线程的循环内的子线程还没结束,从而主线程获取不到子线程里获取的图片。 目录介绍 01.实际开发保存图片遇到的问题 02.直接用http请求图片并保存本地 03.用glide下载图片保存本地 04.如何实现连续保存多张图片...

    thursday 评论0 收藏0
  • android文章精选 - 收藏集 - 掘金

    摘要:瘦身项目实战掘金导语是腾讯海外布局的一个音乐产品,年发布以来已经成为个国家和地区排名第一的音乐。一导入未来的设计师需要知道的个技能设计掘金技术行业的发展步伐正在越来越快。 Android APK 瘦身 - JOOX Music 项目实战 - Android - 掘金导语 JOOX Music是腾讯海外布局的一个音乐产品,2014年发布以来已经成为5个国家和地区排名第一的音乐App。东南...

    airborne007 评论0 收藏0
  • 前沿穿越——HTML5小游戏 制作技巧&经验

    摘要:我先来列一排动画效果给大家看原文中此图已挂图图图刚才上面列的动画效果分别是动画动画逐帧动画。事件会在结束后触发。不可否认,做动画是走在前面的,它的很多表现形式都值得我们借鉴,比如说这位豌豆射手。 转 K米: 前沿穿越——HTML5小游戏 制作技巧&经验 hello~大家好,我是黑米! O(≧▽≦)O 今天我来跟大家分享一些动画实现的相关知识,希望大家能够支持(鞠躬…… 我很喜欢很...

    explorer_ddf 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<