Tôi đang vẽ hình ảnh 2D trên canvas.Ảnh trên canvas tới tệp JPEG
Tôi muốn lưu hình ảnh được hiển thị trên canvas vào tệp JPEG, tôi có thể làm như thế nào?
Tôi đang vẽ hình ảnh 2D trên canvas.Ảnh trên canvas tới tệp JPEG
Tôi muốn lưu hình ảnh được hiển thị trên canvas vào tệp JPEG, tôi có thể làm như thế nào?
Pseudo mã:
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);
Xin chào Samuh, Tôi đã thử mã, nó tạo ra tệp jpeg nhưng không có hình dạng được vẽ canvas hoặc những gì tôi từng viết trên canvas. Mọi nhận xét. Cảm ơn, Ketan –
Cảm ơn bạn đã trả lời. –
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);
}
}
}
Bằng cách nào đó nó cảm thấy như một ý tưởng tồi để nén và lưu trong phương thức onDraw. –
nó mang lại cho tôi ngoại lệ con trỏ null – abh22ishek
Canvas để 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();
}
}
}
Kể từ khi liên kết mà bạn gọi là dài kể từ khi chết bạn có thể có lẽ thêm bối cảnh nhiều hơn một chút vào câu hỏi chính nó? – Flexo