【发布时间】:2012-08-15 22:51:30
【问题描述】:
我想在我的应用程序中拍摄一张真正的黑白照片。我搜索了解决方案(也在这个网站上),但我总是找到将照片放在灰度中的解决方案(例如在this topic 中),但这不是我要找的......
我还找到了一个主题提出这个:
public static Bitmap createContrast(Bitmap src, double value) {
// image size
int width = src.getWidth();
int height = src.getHeight();
// create output bitmap
Bitmap bmOut = Bitmap.createBitmap(width, height, src.getConfig());
// color information
int A, R, G, B;
int pixel;
// get contrast value
double contrast = Math.pow((100 + value) / 100, 2);
// scan through all pixels
for (int x = 0; x < width; ++x) {
for (int y = 0; y < height; ++y) {
// get pixel color
pixel = src.getPixel(x, y);
A = Color.alpha(pixel);
// apply filter contrast for every channel R, G, B
R = Color.red(pixel);
R = (int) (((((R / 255.0) - 0.5) * contrast) + 0.5) * 255.0);
if (R < 0) {
R = 0;
} else if (R > 255) {
R = 255;
}
G = Color.red(pixel);
G = (int) (((((G / 255.0) - 0.5) * contrast) + 0.5) * 255.0);
if (G < 0) {
G = 0;
} else if (G > 255) {
G = 255;
}
B = Color.red(pixel);
B = (int) (((((B / 255.0) - 0.5) * contrast) + 0.5) * 255.0);
if (B < 0) {
B = 0;
} else if (B > 255) {
B = 255;
}
// set new pixel color to output bitmap
bmOut.setPixel(x, y, Color.argb(A, R, G, B));
}
}
return bmOut;
}
但是画质太差了……
请问有人有意见吗?
谢谢
【问题讨论】:
-
嗯..这可能是一个愚蠢的问题,但“真正的黑白”和灰度之间有什么区别?两者都有不同的灰色阴影,但是这些术语有特定的定义吗?顺便说一句,“50 种色调”的笑话被禁止了! :)
-
@Alex - 我也在想同样的事情,偶然发现了这个例子farm3.staticflickr.com/2393/3533241378_04c2b649c2_b.jpg。上图为单色,下图为灰度图。我想这取决于 OP 试图实现的目标 - 从他的应用程序中的手机摄像头捕获真正的单色图像或转换现有图像?我问的唯一原因是因为他已经发布了事后转换它们的示例:-)
-
@shri046 没有一些话,你的例子不是解释。单色是指一种颜色与其他颜色的背景。黑白意味着它在白色背景下是黑色的。我猜您展示的示例只是使用不同的过滤器从彩色转换为黑白。
-
我认为这可能是合适的:stackoverflow.com/questions/2499545/…
-
@slim 我假设 OP 不想要真正的单色(即仅像素值 0 和 255),这让我感到困惑。我在工作时无法检查大多数链接的图像(被阻止,grr)。顺便说一句,黑白也可能意味着黑色背景上的白色!斑马是黑色带白色条纹还是白色带黑色条纹? :)
标签: java android android-camera photo image