我编写了一个绘制折线图的代码。 此图表是使用Android Plot绘制的。 如何将此图保存为.png图像??
答案 0 :(得分:5)
xyPlot.setDrawingCacheEnabled(true);
int width = xyPlot.getWidth();
int height = xyPlot.getHeight();
xyPlot.measure(width, height);
Bitmap bmp = Bitmap.createBitmap(xyPlot.getDrawingCache());
xyPlot.setDrawingCacheEnabled(false);
FileOutputStream fos = new FileOutputStream(fullFileName, true);
bmp.compress(CompressFormat.JPEG, 100, fos);
答案 1 :(得分:4)
您可以将任何View的绘图缓存作为位图获取:
Bitmap bitmap = view.getDrawingCache();
然后您只需将位图保存到文件:
FileOutputStream fos = c.openFileOutput(filename, Context.MODE_PRIVATE);
bitmap.compress(Bitmap.CompressFormat.PNG, 90, fos);
fos.close();
此示例将位图保存到只能由您的应用访问的本地存储。有关保存文件的详细信息,请查看文档:{{3}}
答案 2 :(得分:1)
在调用方法Bitmap bitmap = view.getDrawingCache();
之前,您必须调用方法view.setDrawingCacheEnabled(true)
。
无论如何它不适用于所有视图,如果View扩展SurfaceView,返回的位图将是黑色图像。在这种情况下,您必须使用视图方法绘制(link to another post)。
P.S。:slayton如果我可以写评论我会评论你的帖子但我没有得到声望
答案 3 :(得分:0)
我找到了一种png格式的解决方案:
plot = (XYPlot) findViewById(R.id.pot);
plot.layout(0, 0, 400, 200);
XYSeries series = new SimpleXYSeries(Arrays.asList(array1),Arrays.asList(array2),"series");
LineAndPointFormatter seriesFormat = new LineAndPointFormatter();
seriesFormat.setPointLabelFormatter(new PointLabelFormatter());
plot.addSeries(series, seriesFormat);
plot.setDrawingCacheEnabled(true);
FileOutputStream fos = new FileOutputStream("/sdcard/DCIM/img.png", true);
plot.getDrawingCache().compress(CompressFormat.PNG, 100, fos);
fos.close();
plot.setDrawingCacheEnabled(false);