以高分辨率保存画布图像

3
我正在创建一个Android应用程序,用户可以在画布上绘图、添加文本或图像。
用户完成画布编辑后,有一个保存选项。
但是当我尝试将其保存为图像时,输出的结果图像分辨率非常低。
canvas.setDrawingCacheEnabled(true);                
canvas.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);
Bitmap bitmap = canvas.getDrawingCache();
String path = Environment.getExternalStorageDirectory().getAbsolutePath();
File file = new File(path+"/image.jpg");
FileOutputStream ostream;
try {
    file.createNewFigle();
    ostream = new FileOutputStream(file);
    bitmap.compress(CompressFormat.JPEG, 100, ostream);
    ostream.flush();
    ostream.close();
    Toast.makeText(getApplicationContext(), "image saved", 5000).show();
} catch (Exception e) {
    e.printStackTrace();
    Toast.makeText(getApplicationContext(), "error", 5000).show();
}

我希望将图像保存为A3 300dpi。有可能吗?

2个回答

1
尝试将文本、图像和所有绘图保存为对象,当用户单击保存按钮时,创建一个具有所需分辨率的新位图,并将当前画布转换为所需画布。

0

我认为这是因为使用了bitmap.compress(CompressFormat.JPEG, 100, ostream);,建议使用PNG代替JPEG。 希望你没事。


位图 bitmap = Bitmap.createBitmap(image.宽度,image.高度, Bitmap.Config.ARGB_8888); 画布 canvas = new Canvas(bitmap); - yemonkyaw
抱歉,我忘记了完整的示例代码,如果您不行,请尝试以下代码:Bitmap bitmap = Bitmap.createBitmap(image.width, image.height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); my_journal_ss_item.draw(canvas); try { File file = new File(file_path); FileOutputStream fOut = new FileOutputStream(file); bitmap.compress(Bitmap.CompressFormat.PNG, 100, fOut); fOut.flush(); fOut.close(); } catch (IOException e) { e.printStackTrace(); } - yemonkyaw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接