问题标签 [skia]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
8678 浏览

android - 无法使用 BitmapFactory.decodeFile 加载 JPEG 图像。返回空

我正在制作一个应用程序,显示大量由 Imagemagick 从 PDF 文件生成的图像。某些图像,无法使用 BitmapFactory 加载。它只是返回 null 而不是位图。

日志说:

这不是内存问题,因为一些有问题的图像非常小,并且图像没有损坏,因为我可以在任何其他机器上显示它们。此外,如果我使用 BitmapFactory 能够解码宽度和高度

在选项中。

我尝试使用外部图像查看器 ( QuickPic ) 加载其中一张图像,但没有运气。它还返回“加载失败”,这表明 SKIA 认为图像已损坏或至少由于某种原因不受支持。

可以在此处找到其中一张不起作用的图像

我用来加载它的完整代码在这里

欢迎任何想法有什么问题或如何规避它。

0 投票
1 回答
2260 浏览

android-ndk - 三星 Galaxy S3 上的原生窗口渲染问题

我正在使用 Skia(预建)在一个 android 本机窗口中绘制,这是我从 Java 表面获得的。该代码在我可以测试的所有设备上都运行良好,除了三星 Galaxy S3(上面装有 android 4.0.4)。第一张图是我应该看到的,第二张图出现在 Galaxy S3 上:

在模拟器上测试的屏幕截图:显示一个红色矩形 在三星 Galaxy S3 上测试的屏幕截图:显示一系列红黑斜条纹

绘制矩形的 jni 函数是:

我在以下设备上进行了测试,没有问题:

  • Sony X8 (android 2.3.7 定制rom)
  • 三星 Nexus S (安卓 4.0.4)
  • 三星 Galaxy Tab 10.1 (android 3.2)
  • 三星 Galaxy S2 (安卓 2.3.5)
  • 模拟器(android 4.0.3,与 Galaxy S3 相同的屏幕尺寸和 dpi)

我尝试调用 ANativeWindow_setBuffersGeometry(window,0,0,0) 没有运气(无论如何,窗口锁定后缓冲区的尺寸和格式似乎没问题)。

到目前为止,只有 Galaxy S3 给我带来麻烦,此时我不知道该怎么办,我什至无法判断问题是与 ndk 原生窗口 api 还是与skia,或者可能与使用 TouchWiz 的 Galaxy S3 ......欢迎任何想法!

0 投票
1 回答
750 浏览

android - 在原生 c 中的 android ics 中绘制复杂文本

注意:我的整个 senario 仅适用于 android 版本的 ICS。

我的目标是渲染具有复杂脚本/印度脚本的文本。在 ICS 中,此功能已添加到 WebView(以及浏览器)中。如果在 Browser 或 WebView 中呈现任何指示文本,则它会正确呈现。但在其他小部件(TextView、EditText)中,它呈现损坏。

现在我的目标是重新使用代码在 webcore 中正确绘制 indic 文本,并使用该代码在自定义小部件中绘制 indic 文本。

我还在浏览器中使用 HTML5 画布进行了测试,它可以很好地呈现 indic 文本。我已经测试了 android 的 android.graphics.Canvas 并且它无法正确呈现 indic 文本。

libskia严重缺乏文档,所以我无法弄清楚如何使用它来呈现文本。

我检查了 libwebcore.so 的 objdump,发现它依赖于 lib“skia”“libicu”。所以我假设我可以使用这些库绘制印度文字。

谁能建议我如何使用skia和icu绘制印度文字?或者任何人都可以指向 libwebcore 中的特定代码段吗?

0 投票
1 回答
1620 浏览

ios - 如何为ios构建skia

我尝试在ios上构建skia。然后我下载它然后在mac os上运行SampleApp。所以我想在ios上使用它。但是当我打开xcodeproj时,项目中有很多文件未退出!那么什么可以我用它和How to build skia for ios?? 谢谢提前!!

0 投票
2 回答
3030 浏览

android - 通过 NDK 在 Android 上加载不同版本的系统共享库?

我正在尝试通过使用一些本机库来开发一个 android 应用程序。但是,系统共享库android 4.0android 4.1.2不同。为了保证兼容性,我从平台 4.0 获取 libskia.so 文件,并将其导入到我的项目中。我希望像使用第 3 方共享库一样加载这个共享库。不幸的是,在运行时android 4.1.2,我的应用程序似乎仍然调用系统skia 库。我对此一无所知,以下是我的Android.mk文件

和预建的makefile

有任何想法吗?或者,是否有任何其他方法来确保兼容性?

0 投票
1 回答
561 浏览

ios - 在ios模拟器上成功构建skia,但无法在我的iphone上运行

每个人。我已经完成了在 ios 模拟器上运行的skia。但无法在我的 iphone 上运行。它停在这里。

在 getcpuid 方法中,它说“invaild output constraint 'a' in asm”。它出什么问题了??任何人?

0 投票
1 回答
133 浏览

android - 为什么 SKIA 不使用自定义 FilterInputStream?

我正在尝试从扩展的 FilterInputStream 解码位图。我必须对图像数据执行动态字节操作,以向 SKIA 提供可解码的图像,但是 SKIA 似乎忽略了我的自定义 InputStream 并初始化了它自己的一个......

当我运行我的测试应用程序时,尝试加载 2mb 大的 JPEG 会导致ObfuscatedInputStream.read([])仅从BitmapFactory.decodeStream()

似乎一旦从我检索到的前 16kb 数据确定文件类型,ObfuscatedInputStream它就会初始化自己的本机流并从中读取,有效地渲染我对输入流应该如何工作所做的所有更改无用......

这是我扩展的 FilterInputStream 类中的缓冲读取函数。函数顶部的 Log.d 只执行一次。

有没有人遇到过这个问题?似乎获得我想要的行为的唯一方法是重写部分 SKIA 库......我真的很想知道 InputStream 参数的意义是什么,如果本机实现初始化它自己的流......

0 投票
1 回答
1683 浏览

opengl-es - 为什么我的 android 原生活动在渲染位图时有时会显示错误的图像?

我正在尝试使用NDK全屏显示位图。该要求迫使我使用完全本机代码进行开发。我Skia用来画一个SkBitmap,然后用Opengl APIs. 当我的应用程序第一次在真正的 android 设备上运行时,它总是运行良好。但是,在我多次打开和关闭程序后,它会显示一个不好的图像。为什么会这样?

功能engine_init_display是初始化OpenGL ES和EGL,创建位图和加载纹理。

功能render是显示位图

当窗口被关闭时,engine_term_display将被调用

更新

android_main是我本机应用程序的主要入口点。我发现当这个主函数返回时,整个应用程序仍在运行。

0 投票
1 回答
3016 浏览

android - 如何在 JB 上启用带有 GPU 后端的skia

我听说在 Android 3.0 中添加了 Skia GPU acc,但似乎自 Android 4.0 以来它被默认禁用,可能是因为转向 HWUI(Canvas 的 openGL 实现)。我怎么能再次启用它只是为了基准测试。

0 投票
1 回答
282 浏览

skia - 在 ubuntu 上使用 Skia 库测试无法获得 UI 显示

我按照skia 站点的步骤在我的Ubuntu 12.04 64 位机器上编译skia r1236。当我运行测试时,没有窗口显示图形结果。控制台上的输出是:

[1/33] PDFPrimitives ................... [33/33] BitmapCopy ... 完成 33 次测试,0 次失败。

如果我使用 SkImageEncoder::EncodeFile 将位图放到文件中,我会得到文件的图形输出。这确认该库工作正常,但无法调用 linux 窗口系统。

另一个问题是,在运行文本时,我收到以下错误

SkFontHost::OpenStream 打开 1 失败 --- 字形 0 没有上下文

我已经按照Skia 网站的描述安装了所有的 freetype 库,但是无论我在 SK_FONT_FILE_PREFIX 中使用哪个路径,我仍然有错误。

我的“/usr/share/fonts/”文件夹有

  • 地图
  • 真型
  • 类型1
  • X11

我注意到有一个文件 SkOSWIndow_Unix.cpp 但似乎没有人从测试代码中调用它。所以我的问题是

1)我们如何让输出显示在窗口上?

2) SK_FONT_FILE_PREFIX 的值应该是多少?

PS:Windows 端口工作正常