0

我想将使用 AChartEngine lib 制作的折线图转换为位图。我该怎么做?我在网上没有找到任何可以提供帮助的东西。toBitmap() 方法是否合适?如果是,那么如何使用它?

更新:我使用了这种方法:

 public static Bitmap loadBitmapFromView(View v) {  
v.setDrawingCacheEnabled(true);
v.layout( 0,0,800,600);
v.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);
v.buildDrawingCache();
v.getDrawingCache();
 Bitmap bmp = Bitmap.createBitmap(800,600, Bitmap.Config.ARGB_8888);
v.setDrawingCacheEnabled(false);
return bmp; }

并将结果保存在 png 文件中,但我得到的只是一个空文件!

4

3 回答 3

0

有点晚了,但这是我从 GraphicalView 创建 JPG(通过位图)所做的:

Bitmap bmp = Bitmap.createBitmap( 600, 1000, Bitmap.Config.ARGB_8888 );
Canvas canvas = new Canvas(bmp);
graphicalView.draw( canvas );

FileOutputStream out = new FileOutputStream( filename );
bmp.compress( Bitmap.CompressFormat.JPEG, 97, out );
out.close();
于 2014-06-07T15:21:32.743 回答
0

toBitmap() 似乎总是返回空值。

尝试这个:

            //Get the graphical view 
            GraphicalView v = ChartFactory.getLineChartView(context, 
                            buildDataset(titles, x, values), renderer); 

           //Enable the cache 
            v.setDrawingCacheEnabled(true); 

            //Set the layout manually to 800*600 
            v.layout(0, 0, 800, 600); 

            //Set the quality to high 
            v.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH); 

            //Build the cache, get the bitmap and close the cache 
            v.buildDrawingCache(true); 
            Bitmap b = Bitmap.createBitmap(v.getDrawingCache()); 
            v.setDrawingCacheEnabled(false); 
于 2013-04-05T20:57:21.603 回答
0

SVG 对于图表更有效。我破解了 AChartEngine 以输出 SVG,用于我们使用的特定类型的图表。hack 很容易扩展到其他图表。如果有人对此感兴趣,请回复此答案,我会将我所做的事情放在 Gist 中。

于 2020-05-23T02:27:04.330 回答