1

2 つの画像があります。1 つはカメラ ビューから取得したもので、もう 1 つはカメラ ビュー上にあります。これらの 2 つの画像の組み合わせを SD カードに保存したいと考えています。zith キャンバスをゾークする必要があると思いますが、キャンバスを jpeg に保存する方法がわかりません。つまり、キャンバスからのデータを FileOutputStream に書き込みます。

これが私のコードです

 output = new File(imagesFolder, fileName);
            ImageView view = (ImageView) gameactivity.findViewById(R.id.imageView3);
            view.setDrawingCacheEnabled(true);
            Bitmap bitmap2 = view.getDrawingCache();   
            FileOutputStream fos = null;
            try {
                fos = new FileOutputStream(output);
                fos.write(data);
                fos.close();
            } catch (FileNotFoundException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
              catch (IOException e) {
                    e.printStackTrace();
            }

            try {
                Bitmap bitmap = BitmapFactory.decodeFile(output.getAbsolutePath());
                Canvas canvas = new Canvas(bitmap);
                canvas.drawBitmap(bitmap2, null, null);
// HERE I HAVE TO SAVE THE CANVAS INTO JPEG
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

それが良い始まりかどうか教えてください。私の問題を解決する方法、スタック上の同様の投稿で良い答えが見つかりません(キャンバスを表示したくないため)

4

1 に答える 1

1

キャンバスは、ビットマップに描画する手段にすぎません。

で Canvas を作成しているはずですnew Canvas(myBitmap);。したがって、キャンバスに描画すると、ビットマップに描画されます。

そう使ってmyBitmap

String fileName = Environment.getExternalStorageDirectory() + "/test.png";
OutputStream stream = new FileOutputStream(fileName);
/* Write bitmap to file using JPEG or PNG and 80% quality hint for JPEG. */
myBitmap.compress(CompressFormat.PNG, 80, stream);
stream.close();
于 2013-02-06T10:05:40.137 に答える