我正在努力要求将原始YUV图像(1280 x 720)的亮度值显示为图形。也就是说,我将Y数据分开并以图形的形式显示,其中x轴是宽度,y轴是相应的Y值。
//代码
int count = 0;
int byteValue = 0;
for ( y = 0; y < height; y++) {
for (x = 0; x < width; x++) {
byteValue = pPictureIn[count++] & 0xff;
series.addLast(x, byteValue);
}
}
final PlotStatistics stats = new PlotStatistics(10, false);
plot.addListener(stats);
redrawer = new Redrawer(Arrays.asList(new Plot[]{plot}),
1, false);
format = new LineAndPointFormatter(this, R.xml.formatter);
plot.addSeries(series, format);
redrawer.start();
我正在使用AndroidPlot绘制图表。我正在为系列添加所有要点。我的问题是,如果我尝试渲染点数,我的应用程序会被冻结。我使用渲染模式作为USE_BACKGROUND_THREAD。
有人请帮助我一次性渲染点数而不冻结。提前致谢
答案 0 :(得分:0)
我猜你正在使用SimpleXYSeries
,它没有针对效率或速度进行优化;随着点数的增加,对addLast的调用变得非常昂贵。使用固定内存XYSeries
实现将提供更好的性能。如果您的图像数据是动态的(来自相机或其他图像流),那么环形缓冲区可能是一个很好的设计考虑......我建议特别考虑FixedSizeEditableXYSeries
。
此外,您可以考虑使用SampledXYSeries
对数据进行抽样以缩小尺寸。
Advanced XY Series Types doc有更多关于上述课程和其他课程的利弊的详细信息。