複数のピクチャ生成gif図

2892 ワード

       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   。    :
" + path, Toast.LENGTH_LONG).show(); }