Skia Graphics Library
Android圖形輔助處理器
Skia Graphics Library(SGL)是一個由C++編寫的開放原始碼圖形庫,最初由Skia公司開發,被Google收購後以New BSD License許可下開源。
原作者 | Skia公司 |
---|---|
開發者 | |
源代碼庫 | |
編程語言 | C++ |
類型 | 圖形庫 |
許可協議 | New BSD License |
網站 | skia |
Skia公司所開發的第一個產品就是Skia Graphics Library,能在低端裝置如手機上呈現高品質的2D圖形。截至2017年[update],它已被應用於Android、Google Chrome、Chrome OS、Chromium OS、Mozilla Firefox、Firefox 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中修復。
參見
參考資料
- ^ android 的图形引擎 skia. [2011-07-05]. (原始內容存檔於2012-08-04).
- ^ Use libjpeg-turbo for YUV->RGB conversion in jpeg encoder · google/skia@c7d01d3. GitHub. [2017-03-13]. (原始內容存檔於2019-02-17) (英語).