我想逐渐将一个位图从一种颜色到另一种颜色(就好像它会从不那么红色发光到逐渐变红一样。
我按照像素执行此操作,但这会导致应用程序跳转,有人可以向我展示更有效的方法吗?
private void adjustCountryBitmapColor()
{
//TODO Possible memory leak in this method.
mAllPixels = new int [ mCountryBitmap.getHeight()* mCountryBitmap.getWidth()];
mCountryBitmap.getPixels(mAllPixels, 0, mCountryBitmap.getWidth(), 0, 0, mCountryBitmap.getWidth(),mCountryBitmap.getHeight());
/*
int alpha=argb>>24;
int red=(argb & 0x00FF0000)>>16;
int green=(argb & 0x0000FF00)>>8;
int blue=(argb & 0x000000FF);
*/
for(int i =0; i< mCountryBitmap.getHeight()*mCountryBitmap.getWidth(); i++)
{
if(mAllPixels[i]>>24 == -1)
{
/*AllPixels[i] == Color.BLACK)
{
mAllPixels[i] = Color.RED;
}
*/
mAllPixels[i] = Color.RED;
}
}
System.out.println(mDeltaOffSet);
//int alpha = mAllPixels[0]>>24;
//System.out.println(alpha);
mCountryBitmap.setPixels(mAllPixels, 0, mCountryBitmap.getWidth(), 0, 0, mCountryBitmap.getWidth(), mCountryBitmap.getHeight());
}
答案 0 :(得分:0)
不要创建一个中间位图,这将花费太长时间;正是因为这个原因Canvas#drawBitmap(int[],....)
。另外,请查看带有Paint#setColorFilter()
和ColorMatrixFilter
的{{1}}是否可以涵盖您的颜色转换。
答案 1 :(得分:0)
我找到了一个使用GPU的好的图像处理库。它非常快,你可以做现场摄像机以及即时图像处理。
图书馆由 javierpuntonet / android-gpuimage 提供。只要看看它,我相信你会得到使用它的好处。