gpt4 book ai didi

android - 如何在我的应用程序中实现 android gif 编码器?

转载 作者:太空狗 更新时间:2023-10-29 13:26:52 28 4
gpt4 key购买 nike

我正在尝试使用这个 Android Gif 编码器 https://github.com/nbadal/android-gif-encoder/blob/master/GifEncoder.java

我在尝试在我的 Android 应用程序中实现它时遇到错误。

以下错误是:

  1. outStream.write(generateGIF());描述资源路径位置类型方法 generateGIF() 未定义类型 new View.OnClickListener(){} Main.java/f/src/net/s/f line 197 Java Problem

  2. 公共(public) bool 完成(){描述资源路径位置类型返回类型不兼容 Activity.finish() AnimatedGifEncoder.java/f/src/net/s/f line 164 Java Problem

  3. public byte[] onClick(View v) {描述资源路径位置类型返回类型与View.OnClickListener.onClick(View) Main.java/f/src/net/s/f line 180 Java Problem不兼容

我的代码如下:

save.setOnClickListener(new OnClickListener() {

@Override
public byte[] onClick(View v) {
// TODO Auto-generated method stub


ArrayList<Bitmap> bitmaps = adapter.getBitmapArray();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
AnimatedGifEncoder encoder = new AnimatedGifEncoder();
encoder.start(bos);
for (Bitmap bitmap : bitmaps) {
encoder.addFrame(bitmap);
}
encoder.finish();
return bos.toByteArray();

FileOutputStream outStream = null;
try{
outStream = new FileOutputStream("/sdcard/generate_gif/test.gif");
outStream.write(generateGIF());
outStream.close();
}catch(Exception e){
e.printStackTrace();
}

Toast.makeText(Main.this, "Saved.", Toast.LENGTH_SHORT).show();

}
});

////////////////////////////////////////////////////////////

要使用此类,这里有一个生成 GIF 字节数组的辅助方法示例。注意这里的 getBitmapArray() 函数是一种一次性返回图像适配器中所有位图文件的方法。所以输入是一个适配器中的所有位图文件,输出是一个可以写入文件的字节数组。

public byte[] generateGIF() {
ArrayList<Bitmap> bitmaps = adapter.getBitmapArray();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
AnimatedGifEncoder encoder = new AnimatedGifEncoder();
encoder.start(bos);
for (Bitmap bitmap : bitmaps) {
encoder.addFrame(bitmap);
}
encoder.finish();
return bos.toByteArray();
}

要使用此功能,请执行以下操作,然后您可以将文件保存到 SD 卡中。

FileOutputStream outStream = null;
try{
outStream = new FileOutputStream("/sdcard/generate_gif/test.gif");
outStream.write(generateGIF());
outStream.close();
}catch(Exception e){
e.printStackTrace();
}

最佳答案

如果您想将 gif 直接保存在文件中,您的 onClick() 方法应该如下所示:

@Override
public void onClick(View v) {
ArrayList<Bitmap> bitmaps = adapter.getBitmapArray();
File outputFile = new File("/sdcard/generate_gif/test.gif");
FileOutputStream fos = null;
try {
fos = new FileOutputStream(outputFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}

if (fos != null) {
AnimatedGifEncoder gifEncoder = new AnimatedGifEncoder();
gifEncoder.start(fos);

for (Bitmap bitmap : bitmaps) {
gifEncoder.addFrame(bitmap);
}

gifEncoder.finish();
}

Toast.makeText(Main.this, "Saved.", Toast.LENGTH_SHORT).show();
}

关于android - 如何在我的应用程序中实现 android gif 编码器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20532097/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com