画布上的图像到JPEG文件

时间:2010-02-01 05:43:39

标签: android jpeg android-canvas

我正在画布上绘制2D图像。

我想将画布上显示的图像保存为JPEG文件,我该怎么办?

3 个答案:

答案 0 :(得分:25)

  1. 创建一个空位图
  2. 创建一个新的Canvas对象并将此位图传递给它
  3. 调用view.draw(Canvas)将刚刚创建的画布对象传递给它。 Refer Documentation of method for details.
  4. 使用Bitmap.compress()将位图的内容写入OutputStream,文件可能。
  5. 伪代码:

    Bitmap  bitmap = Bitmap.createBitmap( view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    view.draw(canvas); 
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos); 
    

答案 1 :(得分:11)

  1. 设置启用绘图缓存
  2. 画出你想要的任何东西
  3. 从视图中获取位图对象
  4. 压缩并保存图像文件
  5. 
    import java.io.File;
    import java.io.FileOutputStream;
    
    import android.app.Activity;
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    
    public class CanvasTest extends Activity {
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            Draw2d d = new Draw2d(this);
            setContentView(d);
        }
    
        public class Draw2d extends View {
    
            public Draw2d(Context context) {
                super(context);
                setDrawingCacheEnabled(true);
            }
    
            @Override
            protected void onDraw(Canvas c) {
                Paint paint = new Paint();
                paint.setColor(Color.RED);          
                c.drawCircle(50, 50, 30, paint);
    
                try {
                    getDrawingCache().compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(new File("/mnt/sdcard/arun.jpg")));
                } catch (Exception e) {
                    Log.e("Error--------->", e.toString());
                }
                super.onDraw(c);
            }
    
        }
    
    }

答案 2 :(得分:6)

Canvas to JPG:

Canvas canvas = null;
FileOutputStream fos = null;
Bitmap bmpBase = null;

bmpBase = Bitmap.createBitmap(image_width, image_height, Bitmap.Config.ARGB_8888);
canvas = new Canvas(bmpBase);
// draw what ever you want canvas.draw...

// Save Bitmap to File
try
{
    fos = new FileOutputStream(your_path);
    bmpBase.compress(Bitmap.CompressFormat.PNG, 100, fos);

    fos.flush();
    fos.close();
    fos = null;
}
catch (IOException e)
{
    e.printStackTrace();
}
finally
{
    if (fos != null)
    {
        try
        {
            fos.close();
            fos = null;
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }
}