我目前正在使用支持库中的Palette API(
https://developer.android.com/tools/support-library/features.html#v7-palette)
下面的代码适用于数百张图片,完全没问题.我根据调色板结果设置文本和背景颜色.结果非常好看,非常好看(如果你想在你的应用程序中重复使用它,请不要犹豫!).
不幸的是,在数百张图片中,只有一张不起作用,并给出了奇怪的结果.
这是一个=> http://www.cineswellington.com/images/film/140929075044.jpg
由于调色板没有文档或调试模式,我真的很想知道会发生什么,以及是否有办法了解原始图片中是否存在缺陷或其他什么.
Picasso.with(getActivity()).load("http://www.cineswellington.com/images/film/140929075044.jpg").into(t); private Target t = new Target() { @Override public void onBitmapLoaded(Bitmap bitmap,Picasso.LoadedFrom from) { Palette.generateAsync(bitmap,new Palette.PaletteAsyncListener() { public void onGenerated(Palette palette) { ((ImageView) v.findViewById(R.id.iv)).setImageDrawable(new BitmapDrawable(bitmap)); //At this point,the ImageView is correctly filled,so the bitmap object has no issue. int textColor = palette.getLightMutedColor(android.R.color.darker_gray); int bgColor = palette.getDarkMutedColor(android.R.color.white); Log.d("CVE","textColorInt: "+ textColor); Log.d("CVE","bgColorInt: "+bgColor); Log.d("CVE","textColorHexa: "+String.format("#%06X",0xFFFFFF & textColor)); Log.d("CVE","bgColorHexa: "+String.format("#%06X",0xFFFFFF & bgColor)); } }); } };
这是输出:
如果有人可以帮我重现这个错误,或者告诉我它只发生在我这边,那就太棒了
textColorInt: 17170432 bgColorInt: 17170443 textColorHexa: #Picasso.with(getActivity()).load("http://www.cineswellington.com/images/film/140929075044.jpg").into(t); private Target t = new Target() { @Override public void onBitmapLoaded(Bitmap bitmap,0xFFFFFF & bgColor)); } }); } };
0
bgColorHexa: #Picasso.with(getActivity()).load("http://www.cineswellington.com/images/film/140929075044.jpg").into(t); private Target t = new Target() { @Override public void onBitmapLoaded(Bitmap bitmap,0xFFFFFF & bgColor)); } }); } };Picasso.with(getActivity()).load("http://www.cineswellington.com/images/film/140929075044.jpg").into(t); private Target t = new Target() { @Override public void onBitmapLoaded(Bitmap bitmap,0xFFFFFF & bgColor)); } }); } };BPicasso.with(getActivity()).load("http://www.cineswellington.com/images/film/140929075044.jpg").into(t); private Target t = new Target() { @Override public void onBitmapLoaded(Bitmap bitmap,0xFFFFFF & bgColor)); } }); } };
解决方法
图像似乎仅由鲜艳的颜色组成,因此很难创建适合它的柔和调色板.算法没有这样做也就不足为奇了.
如果静音暗/光太相似,请尝试使用getVibrantColor()函数.