【问题标题】:Android - Issue in rendering bulk points using Android plotAndroid - 使用 Android 绘图渲染散装点的问题
【发布时间】:2017-01-10 15:51:48
【问题描述】:

我正在研究将原始 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。

请有人帮我一次性渲染这些点而不会冻结。提前致谢

【问题讨论】:

  • 您在哪个线程上遍历图像中的每个像素?
  • 我正在处理异步任务中的像素,并开始在 post execute 方法上进行渲染。 @Morrison Chang
  • 如果我给的分数更少,它的渲染就正确了。否则应用程序会冻结。 @Morrison Chang
  • 如果您正在检查 Java 中的每个像素(并等待它) - 试试 RenderScript - stackoverflow.com/documentation/android/5214/renderscript/18462/…
  • 那么,我可以使用这个 renderScript 来渲染图形吗?因为遍历所有像素并没有引起任何问题@Morrison Chang

标签: android graph rendering yuv androidplot


【解决方案1】:

我猜你正在使用SimpleXYSeries,它没有针对效率或速度进行优化;随着点数的增加,对 addLast 的调用变得非常昂贵。使用固定内存XYSeries 实现将提供更好的性能。如果您的图像数据是动态的(来自相机或其他图像流),那么环形缓冲区可能是一个值得考虑的好设计……我建议您特别看看 FixedSizeEditableXYSeries

此外,您可以考虑使用SampledXYSeries 对数据进行抽样以减小大小。

Advanced XY Series Types 文档有更多关于上述类和其他一些类的优缺点的详细信息。

【讨论】:

  • 我更喜欢这个问题的 opengl 渲染,我已经完成了。但是,我还是会看看它,因为我将 XYSeries 用于其他目的。谢谢 nick@Nick
猜你喜欢
  • 2022-01-12
  • 2016-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-14
  • 2016-03-31
  • 2019-03-27
  • 1970-01-01
相关资源
最近更新 更多