Android:将画布保存为SD卡上的jpeg / png

时间:2013-02-06 09:48:34

标签: android canvas bitmap jpeg

我有两张图片,一张是我从相机视图中看到的,另一张是在相机视图上。 我想在SD卡上保存这两张图像的组合。我想我必须zork zith canvas但我不知道如何将画布保存到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();
            }
你能告诉我这是不是一个好的开始?以及如何解决我的问题,我在堆栈上的类似帖子上找不到好的答案(因为我不想将画布绘制到视图中)

1 个答案:

答案 0 :(得分:1)

Canvas只是一种绘制到Bitmap的方法。

您应该使用new Canvas(myBitmap);创建Canvas。因此,当您在Canvas上绘制时,它会绘制到您的位图。

所以使用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();