我有一个要求,就像在画布中绘制某些内容并将其保存为较大的图像。截至目前,无论我在onDraw()方法中绘制并保存,它都会提供设备提供的图像/画布大小,比如538(w)/ 852(h)。我需要几乎两倍的图像,大约1000(w)/ 1500(h)而不会失去分辨率。任何示例代码,参考链接都会有帮助。提前致谢。在画布中绘制并将其保存为较大图像
0
A
回答
0
一种方法是创建所需大小的位图和借鉴它用帆布:
int w = 1000, h = 1500;
Bitmap.Config conf = Bitmap.Config.ARGB_8888;
Bitmap bmp = Bitmap.createBitmap(w, h, conf);
Canvas canvas = new Canvas(bmp);
最后,你将有你与你的图纸和必要dimentions对bmp。
编辑::使用功能getDrawingCache()
视图的
@Override
protected void onDraw(Canvas canvas) {
int w = 1000, h = 1500;
Bitmap.Config conf = Bitmap.Config.ARGB_8888;
Bitmap bmp = Bitmap.createBitmap(w, h, conf);
Canvas mycanvas = new Canvas(bmp);
super.onDraw(mycanvas);
...
}
0
先得到位图,然后缩放位图按您的要求。
view.buildDrawingCache();
Bitmap bitmap = view.getDrawingCache();
//bitmap = bitmap.createScaledBitmap(..as your requirements..);
编辑
您是说要在更高质量的图像。您不能简单地从较低质量的图像获得更高质量的图像。但是,您可以应用位图过滤来获得稍好的质量。
Bitmap bitmap = getDrawingCache();
Bitmap output = Bitmap.createBitmap(/*width, height, bla bla bla*/);
Canvas canvas = new Canvas(output);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG);
Rect srcRect = new Rect(0,0,bitmap.getWidth(), bitmap.getHeight());
Rect destRect = new Rect(0,0,output.getWidth(), output.getHeight());
canvas.drawBitmap(bitmap, srcRect, destRect, paint);
+0
缩放位图会导致分辨率丢失,对吗?我的要求是要获得“良好的分辨率”,即使我看到这个图像从任何其他第三方工具放大,如画廊,imageviewer等。 – dask
+0
@dask检查编辑的答案。 –
相关问题
- 1. 如何将画布绘制保存为图像?
- 2. Phplot绘制图像并将其保存在文件中
- 3. 将画布调整为较大的图像并将其发送到服务器
- 4. 如何将画布保存为图像?
- 5. 绘制大型图像到画布上
- 6. 将保存的图像数据重绘为HTML 5画布
- 7. 如何通过图像绘制图像并将其保存为android系统
- 8. 画布保存像素绘制出视图制造
- 9. 在Android中保存画布在图像上绘图
- 10. HTML5画布绘制图像
- 11. 使用背景图像在画布上绘图并保存图像
- 12. 在画布中间绘制图像
- 13. 将图像添加到画布不允许将画布保存为图像
- 14. 在HTML5画布中将文本绘制为图像
- 15. 在画布上绘制的图像,并返回作为纹理
- 16. 保存画布绘制的图像到mysql数据库
- 17. 将画布图像保存到mysql
- 18. 将画布图像保存到SQLite?
- 19. 将大量图像绘制到html5画布
- 20. 在画布上绘制对象/图像
- 21. 在画布上绘制背景图像
- 22. 在缩放画布上绘制图像
- 23. 在画布上绘制旋转图像
- 24. 在画布上绘制阵列图像?
- 25. 用JQuery在画布上绘制图像
- 26. 如何保存绘图图像并在MATLAB中保持原始图像大小?
- 27. 图像对象裁剪并在画布中心绘制
- 28. 如何在Android中将小图像绘制到画布中
- 29. 如何从我的电脑上传图像并将其绘制到画布上?
- 30. 使用画布在图像(jpg或png)上绘图并将图形与图像一起保存
同意,但目前无论我在做什么,都在onDraw(Canvas c)中。如何将它保存到更大的图像?是否需要使用您提供的代码重新绘制并保存它? – dask
了解,在这种情况下,您可以将当前画布从父视图类中取消链接,并将您创建的位图与必要尺寸链接起来。 –