Skia Graphics Library

Android圖形輔助處理器

Skia Graphics Library(SGL)是一个由C++编写的开放原始码图形库,最初由Skia公司开发,被Google收购后以New BSD License许可下开源。

Skia Graphics Engine
原作者Skia公司
开发者Google
源代码库 编辑维基数据链接
编程语言C++
类型图形库
许可协议New BSD License
网站skia.org

Skia公司所开发的第一个产品就是Skia Graphics Library,能在低端装置如手机上呈现高品质的2D图形。截至2017年 (2017-Missing required parameter 1=month!),它已被应用于AndroidGoogle ChromeChrome OSChromium OSMozilla FirefoxFirefox OS以及Sublime Text

2012年时Skia有大概80,000行程式码,以C++开发而成[1]

范例

Skia主要的类别是SkCanvas,所有的绘图功能都是实作于此类别。以下是SGL简单的程式码:

SkCanvas* can = GraphicsJNI::getNativeCanvas(...);      
SkPaint paint;    
paint.setARGB(255, 0, 0, 255);
can->drawText("Hello, world", 12, 10, 10, paint);

“绿化”缺陷

为了提高运行的效率,Google在Android的Skia实现中,对JPG压缩处理算法改写来代替调用libjpeg-turbo,实现了一个低精度的YUV转换为RGB的算法,但该改写算法中除法取整的方式不合理,不仅每次压缩后画质劣化更严重,随着误差逐步累积,还会导致图片会越来越偏向绿色。最终该缺陷在2016年4月得到修复,修改回直接使用libjpeg-turbo的调用。[2]而作为Android基础库的一部分,该修复也被认为预计于Android 7中修复。

参见

参考资料

  1. ^ android 的图形引擎 skia. [2011-07-05]. (原始内容存档于2012-08-04). 
  2. ^ Use libjpeg-turbo for YUV->RGB conversion in jpeg encoder · google/skia@c7d01d3. GitHub. [2017-03-13]. (原始内容存档于2019-02-17) (英语). 

外部链接