使用:
// eg:将加载完成的图片白底转透明
KapGlideHelper.CreatedGlide(getContext(),card.getCardLogoPath())
.transform(new GlideBitmapChangeTransform(getContext()) {
@Override
public Bitmap changeBitmap(Bitmap oldBitmap) {
return ImageDrawHelper.DrawWriteToAlpha(oldBitmap);
}
})
.into(iconImageView);
核心代码:
.transform(new GlideBitmapChangeTransform(getContext()) {
@Override
public Bitmap changeBitmap(Bitmap oldBitmap) {
return ImageDrawHelper.DrawWriteToAlpha(oldBitmap);
}
})
工具类代码如下:
import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;
/**
* glide 处理bitmap的 帮助类
* */
public abstract class GlideBitmapChangeTransform extends BitmapTransformation {
abstract public Bitmap changeBitmap(Bitmap oldBitmap);
public GlideBitmapChangeTransform(Context context) {
super(context);
}
@Override
protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
// 透明底
return changeBitmap(toTransform);
}
@Override
public String getId() {
return getClass().getName();
}
}
相关函数:
/**
* Created by jing on 2017/6/7.
* Glide 图片加载帮助类
*/
public class KapGlideHelper {
/**
* 用Application context 防止出现
* */
// 创建gradle
public static RequestManager CreatedGlide(){
return Glide.with(KapApplication.getContext());
}
public static DrawableRequestBuilder CreatedGlide(String url){
return CreatedGlide(KapApplication.getContext(),url);
}
public static DrawableRequestBuilder CreatedGlide(Context context, String url){
return Glide.with(context).load(url).diskCacheStrategy(DiskCacheStrategy.SOURCE);
}
}
public class ImageDrawHelper {
// 白色转化为透明色(对像素操作)
public static Bitmap DrawWriteToAlpha(Bitmap mBitmap){
Bitmap createBitmap = Bitmap.createBitmap(mBitmap.getWidth(), mBitmap.getHeight(), Bitmap.Config.ARGB_8888);
if (mBitmap != null) {
int mWidth = mBitmap.getWidth();
int mHeight = mBitmap.getHeight();
for (int i = 0; i < mHeight; i++) {
for (int j = 0; j < mWidth; j++) {
int color = mBitmap.getPixel(j, i);
int g = Color.green(color);
int r = Color.red(color);
int b = Color.blue(color);
int a = Color.alpha(color);
if(g>=250&&r>=250&&b>=250){
a = 0;
}
color = Color.argb(a, r, g, b);
createBitmap.setPixel(j, i, color);
}
}
}
return createBitmap;
}
}
网友评论