gpt4 book ai didi

java - 颜色减淡混合位图

转载 作者:行者123 更新时间:2023-11-29 03:48:25 25 4
gpt4 key购买 nike

我有两个位图 topBitmap 和 bottomBitmap,我需要在 android 中使用颜色减淡来混合这两个位图。我在 PorterDuffXfermode 中找不到颜色减淡。有没有办法在不使用 Canvas 的情况下用 ot 做到这一点?

请告诉我如何在 android 中使用颜色减淡模式混合两个位图。提前致谢。

最佳答案

您好,我是从 SO 帖子的某个地方找到这个方法的。此方法拍摄两张图像并使用颜色减淡创建一张图像

public Bitmap ColorDodgeBlend(Bitmap source, Bitmap layer) {
Bitmap base = source.copy(Config.ARGB_8888, true);
Bitmap blend = layer.copy(Config.ARGB_8888, false);

IntBuffer buffBase = IntBuffer.allocate(base.getWidth() * base.getHeight());
base.copyPixelsToBuffer(buffBase);
buffBase.rewind();

IntBuffer buffBlend = IntBuffer.allocate(blend.getWidth() * blend.getHeight());
blend.copyPixelsToBuffer(buffBlend);
buffBlend.rewind();

IntBuffer buffOut = IntBuffer.allocate(base.getWidth() * base.getHeight());
buffOut.rewind();

while (buffOut.position() < buffOut.limit()) {

int filterInt = buffBlend.get();
int srcInt = buffBase.get();

int redValueFilter = Color.red(filterInt);
int greenValueFilter = Color.green(filterInt);
int blueValueFilter = Color.blue(filterInt);

int redValueSrc = Color.red(srcInt);
int greenValueSrc = Color.green(srcInt);
int blueValueSrc = Color.blue(srcInt);

int redValueFinal = colordodge(redValueFilter, redValueSrc);
int greenValueFinal = colordodge(greenValueFilter, greenValueSrc);
int blueValueFinal = colordodge(blueValueFilter, blueValueSrc);


int pixel = Color.argb(255, redValueFinal, greenValueFinal, blueValueFinal);


buffOut.put(pixel);
}

buffOut.rewind();

base.copyPixelsFromBuffer(buffOut);
blend.recycle();

return base;
}

这里是获取像素颜色减淡效果的方法

private int colordodge(int in1, int in2) {
float image = (float)in2;
float mask = (float)in1;
return ((int) ((image == 255) ? image:Math.min(255, (((long)mask << 8 ) / (255 - image)))));
}

我正在尝试创建原始照片的素描图像,使用这种方法我可以创建彩色完整格式的卡通化图像,但我需要黑白铅笔素描格式。如果您有任何想法,请分享。

希望这些方法对你有用

关于java - 颜色减淡混合位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9841845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com