多张图片生成gif图

之前项目要求把png图片合成gif的,在网上找的方法。仅当笔记记录,没备注,大佬勿喷。
private IdentityHashMap pics = new IdentityHashMap();
/**
     * 生成gif图
     *
     * @param file_name 保存文件名
     * @param delay     帧之间间隔的时间
     */
    private void createGif(String file_name, int delay) {
        Bitmap b1 = BitmapUtils.getBitmap(this, "15/1");
        Bitmap b2 = BitmapUtils.getBitmap(this, "15/2");
        Bitmap b3 = BitmapUtils.getBitmap(this, "15/3");
        Bitmap b4 = BitmapUtils.getBitmap(this, "15/4");
        Bitmap b5 = BitmapUtils.getBitmap(this, "15/5");
        Bitmap b6 = BitmapUtils.getBitmap(this, "15/6");
        Bitmap b7 = BitmapUtils.getBitmap(this, "33/7");
        Bitmap b8 = BitmapUtils.getBitmap(this, "33/8");
        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(b1);
            localAnimatedGifEncoder.addFrame(b2);
            localAnimatedGifEncoder.addFrame(b3);
            localAnimatedGifEncoder.addFrame(b4);
            localAnimatedGifEncoder.addFrame(b5);
            localAnimatedGifEncoder.addFrame(b6);
//            localAnimatedGifEncoder.addFrame(b7);
//            localAnimatedGifEncoder.addFrame(b8);
        } else {
            for (int i = 0; i < pics.size(); i++) {
                // Bitmap localBitmap = ThumbnailUtils.extractThumbnail(BitmapFactory.decodeFile(pics.get(i)), 512, 512);
                localAnimatedGifEncoder.addFrame(BitmapFactory.decodeFile((String) 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();
            LogUtils.e("Gif已保存:");
        } catch (IOException e) {
            e.printStackTrace();
            LogUtils.e("Gif保存失败" + e);
        }

        ivCover.setImageURI(Uri.parse(path));
        LogUtils.e("Gif已生成。保存路径:" + path);
        Toast.makeText(MainActivity.this, "Gif已生成。保存路径:\n" + path, Toast.LENGTH_LONG).show();
    }
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Unity是一款强大的游戏引擎,在游戏制作和开发中有着广泛的应用。然而,Unity也可以用于制作动画和GIF。 如果想要将多张图片合成为GIF,我们可以使用Unity中的Animation窗口来完成。具体步骤如下: 1. 将所有需要合成的图片导入到Unity中,可以使用菜单栏中的Assets -> Import New Asset来导入图片。 2. 在Unity的Hierarchy面板中创建一个空物体,命名为“合成器”,并选择该物体。 3. 在Unity的Animation窗口中点击“Create”按钮,创建一个新的Animaton Clip,并将其命名为“GIF”。 4. 在Animation窗口中,点击“Record”按钮,开始录制动画。 5. 在录制状态下,将需要合成的图片依次拖拽到场景中,使其按一定的顺序排列。 6. 当所有图片都排列好后,停止录制动画。 7. 在Animation窗口中点击“Play”按钮,预览合成后的GIF动画。 8. 如果需要将GIF导出,可以使用菜单栏中的Assets -> Export Package来将“合成器”物体和“GIF”动画一起导出。 通过上述步骤,我们就能够在Unity中快速地将多张图片合成为GIF动画。除了Animation窗口,Unity中还有其他一些插件和工具可以帮助我们创建更复杂、更高质量的动画。 ### 回答2: 在Unity中,将多张图片合成GIF是一项很简单的任务。通过使用适当的插件和脚本,您可以轻松地将您的图片或动画序列转换为动画GIF。 首先,你需要导入一个GIF制作插件。在Unity Asset Store中,有许多可用的插件,例如GIF压缩机和Eazy GIF。这些插件可以帮助你将多张图片转换为GIF。 其次,将您的图片导入Unity,将它们设置为一个能够组合像帧的Sprite纹理。可以使用Unity内置的Sprite组件将图片导入像并创建Sprite。或是使用导入的插件,都可以方便地将图片转换成适当的组合帧。 然后,创建一个GIF并设置其属性。您可以使用GIF制作插件(例如GIF Compression机)创建新的GIF,并根据您的需要设置其属性。在此过程中,您可以设置GIF的间隔时间、帧速率等等。这些设置将影响您最终生成GIF的质量和文件大小。 最后,将您的图片添加到GIF中,以生成一个连续的动画序列。在Unity中,您可以使用代码编写脚本,将您的纹理合成一个GIF。使用SetPixels和Apply命令,您可以组成您的图片,并导出GIF。您还可以使用插件来完成此任务。 综上所述,Unity 多张图片合成GIF 只需几个简单的步骤即可完成。通过使用适当的插件和脚本,您可以轻松地将您的图片序列转换为动画GIF,以便在您的项目中使用并分享。 ### 回答3: Unity可以通过使用插件或脚本实现多张图片合成GIF动画。其中,最常用的插件是“EZ GIF”,它可以快速、轻松地生成高质量的GIF动画。 首先,需要将所有需要合成的图片导入到Unity的资源管理器中。然后,使用插件或脚本在代码中将这些图片按顺序合成为一张GIF动画。在合成完成后,可以将GIF动画保存到硬盘或直接在游戏中播放。 在合成GIF动画时,需要注意以下几点: 1. 图片的大小和分辨率应尽可能一致,避免出现变形或缩放。 2. 图片的帧率和动画长度应根据需要谨慎选择,避免动画过长或过短。 3. 合成GIF动画可能会消耗大量的系统资源和内存,因此需要合理优化代码和程序运行效率。 总之,利用Unity的插件或脚本,可以很容易地实现多张图片合成GIF动画的功能,并带来更丰富的游戏体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值