android圖片特效之取主色
阿新 • • 發佈:2019-02-07
有時候在佈置介面的時候,配色的好壞直接關係到一個應用的美觀和使用者體驗。如果能夠自動產生一種配色使得背景與圖片融為一體,那就再好不過了。而且目前,網上也有累似的功能的開源專案,可以順手拈來。比如:
https://github.com/MichaelEvans/ColorArt這裡面就可以取bitmap中的包括背景色在內的多種顏色,而且效果也不錯。但是,一旦圖片邊緣有透明的情況下,去背景色就不準了,因為我們不需要透明的顏色。
還比如:https://github.com/thiagokimo/Alexei這裡也有提供去的主色調的功能,儘管,去主色調沒有取得背景色調來得好,但是,已經相當不錯了。但顯然,這個庫在有透明度的圖片面前也顯得不夠優秀。
我最總選擇了第三種,就是我接下來也說的著一種:
這種方法要用到Palette這個類,這個類是superV7包裡的類,所以,使用這個類的需要匯入V7的包,但是,這個包也並不是完美的,至少也存在某些圖片時,取色沒能很好的搭配背景。但是,我經過大量的測試發現,在大量的圖片中出現的頻率相對較低。當然,我後來做了一些調整。我在原來顏色的基礎上對顏色的色相做了一定的處理,是的儘可能的看起來更加融洽。private int colorFromBitmap(Bitmap bitmap) { // Author of Palette recommends using 24 colors when analyzing profile photos. final int NUMBER_OF_PALETTE_COLORS = 24; final Palette palette = Palette.generate(bitmap, NUMBER_OF_PALETTE_COLORS); if (palette != null && palette.getVibrantSwatch() != null) { return palette.getVibrantSwatch().getRgb(); } return 0; }
以上三中選色方法,可以根據需要不同進行自行選擇。當然,我個人覺得,如果圖片沒有大量透明度的情況下,ColorArt我認為是最優秀的。