Bitmap bmp;ImageVIEw alteredImageVIEw;...public voID drawAlteredImage(float contr,float bright) { Bitmap alteredBitmap = Bitmap.createBitmap(bmp.getWIDth(),bmp.getHeight(),bmp.getConfig()); Canvas canvas = new Canvas(alteredBitmap); Paint paint = new Paint(); colorMatrix cm = new colorMatrix(); cm.set(new float[] { contr,bright,contr,1,0 }); paint.setcolorFilter(new colorMatrixcolorFilter(cm)); Matrix matrix = new Matrix(); canvas.drawBitmap(bmp,matrix,paint); alteredImageVIEw.setimageBitmap(alteredBitmap);}
但是当我向colorMatrix添加setSaturation方法时,对比度和亮度变化不再起作用.代码:
public voID drawAlteredImage(float contr,float bright,float satur) { Bitmap alteredBitmap = Bitmap.createBitmap(bmp.getWIDth(),0 }); cm.setSaturation(satur); paint.setcolorFilter(new colorMatrixcolorFilter(cm)); Matrix matrix = new Matrix(); canvas.drawBitmap(bmp,paint); alteredImageVIEw.setimageBitmap(alteredBitmap);}
在这种情况下,仅应用饱和效应.为什么会出现这个问题?我该如何解决?
解决方法 setSaturation(…)方法替换矩阵中的所有值.您可以创建一个结合两个 *** 作的矩阵,也可以使用两个单独的drawBitmap(…)调用来执行 *** 作.尝试:
cm.setSaturation(satur);final float m[] = cm.getArray();final float c = contr;cm.set(new float[] { m[ 0] * c,m[ 1] * c,m[ 2] * c,m[ 3] * c,m[ 4] * c + bright,m[ 5] * c,m[ 6] * c,m[ 7] * c,m[ 8] * c,m[ 9] * c + bright,m[10] * c,m[11] * c,m[12] * c,m[13] * c,m[14] * c + bright,m[15],m[16],m[17],m[18],m[19] });总结
以上是内存溢出为你收集整理的android – 将Saturation和ColorFilter设置为同时成像全部内容,希望文章能够帮你解决android – 将Saturation和ColorFilter设置为同时成像所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)