3 回答

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊
創(chuàng)建一個(gè)空的位圖
創(chuàng)建一個(gè)新的Canvas對(duì)象并將此位圖傳遞給它
調(diào)用view.draw(Canvas),將剛剛創(chuàng)建的畫(huà)布對(duì)象傳遞給它。有關(guān)詳細(xì)信息,請(qǐng)參見(jiàn)方法文檔。
使用Bitmap.compress()可以將位圖的內(nèi)容寫(xiě)入到OutputStream文件中。
偽代碼:
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);

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個(gè)贊
設(shè)置工程圖緩存已啟用
畫(huà)任何你想要的
從視圖獲取位圖對(duì)象
壓縮并保存圖像文件
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);
}
}
}

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
畫(huà)布到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();
}
}
}
- 3 回答
- 0 關(guān)注
- 485 瀏覽
添加回答
舉報(bào)