我正在开发一个包含过滤器和裁剪的应用程序。我在这里使用cropping library。在这里,我使用了8 * 8 luts,如sample lut。在这里,我想要过滤过滤后的图像(8 * 8 lut)
以下是裁剪图像的逻辑。
Bitmap cropbitmap = ivCropimageView.getCroppedImage();
使用此位图我生成如下所示的缩略图位图。
Bitmap thumbImage = ThumbnailUtils.extractThumbnail(cropbitmap, 190, 250);
当我尝试为所有过滤器生成缩略图时,缩略图显示的噪音太像this。
这个结果是我实施renderscript的答案。
所以如果有人有想法,请帮助我..
答案 0 :(得分:0)
我正在开发一个LUT应用程序库,可以简化在Android中使用LUT图像的过程。现在它还猜测了LUT的颜色轴:
https://github.com/dntks/easyLUT/wiki
它使用我在other post
中提到的algorythm答案 1 :(得分:-1)
你可以通过这个,希望它能帮助你获得正确的过程。
照片是这里的主要位图。
mLut3D是存储在drawable
中的LUT图像数组 RenderScript mRs;
Bitmap mLutBitmap, mBitmap;
ScriptIntrinsic3DLUT mScriptlut;
Bitmap mOutputBitmap;
Allocation mAllocIn;
Allocation mAllocOut;
Allocation mAllocCube;
int mFilter = 0;
mRs = RenderScript.create(yourActivity.this);
public Bitmap filterapply() {
int redDim, greenDim, blueDim;
int w, h;
int[] lut;
if (mScriptlut == null) {
mScriptlut = ScriptIntrinsic3DLUT.create(mRs, Element.U8_4(mRs));
}
if (mBitmap == null) {
mBitmap = photo;
}
mOutputBitmap = Bitmap.createBitmap(mBitmap.getWidth(),
mBitmap.getHeight(), mBitmap.getConfig());
mAllocIn = Allocation.createFromBitmap(mRs, mBitmap);
mAllocOut = Allocation.createFromBitmap(mRs, mOutputBitmap);
// }
mLutBitmap = BitmapFactory.decodeResource(getResources(),
mLut3D[mFilter]);
w = mLutBitmap.getWidth();
h = mLutBitmap.getHeight();
redDim = w / h;
greenDim = redDim;
blueDim = redDim;
int[] pixels = new int[w * h];
lut = new int[w * h];
mLutBitmap.getPixels(pixels, 0, w, 0, 0, w, h);
int i = 0;
for (int r = 0; r < redDim; r++) {
for (int g = 0; g < greenDim; g++) {
int p = r + g * w;
for (int b = 0; b < blueDim; b++) {
lut[i++] = pixels[p + b * h];
}
}
}
Type.Builder tb = new Type.Builder(mRs, Element.U8_4(mRs));
tb.setX(redDim).setY(greenDim).setZ(blueDim);
Type t = tb.create();
mAllocCube = Allocation.createTyped(mRs, t);
mAllocCube.copyFromUnchecked(lut);
mScriptlut.setLUT(mAllocCube);
mScriptlut.forEach(mAllocIn, mAllocOut);
mAllocOut.copyTo(mOutputBitmap);
return mOutputBitmap;
}
你增加mFilter值以获得不同LUT图像的不同滤镜效果,你有,检查出来。
你可以通过github上的这个链接获得更多帮助,我从这里得到了答案: - https://github.com/RenderScript/RsLutDemo
希望它会有所帮助