我想从AndroidPlot中保存一个.png图像

时间:2011-09-23 17:00:37

标签: android android-layout bitmap png androidplot

我编写了一个绘制折线图的代码。 此图表是使用Android Plot绘制的。 如何将此图保存为.png图像??

4 个答案:

答案 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);