我需要将位图转换为我的hw的二进制图像。你知道的吗?
答案 0 :(得分:3)
您是否正在寻找执行转换的算法?
最简单的方法是将每个像素值与固定阈值进行比较:如果像素值小于阈值,则相应的输出像素为黑色(0),否则为白色(1)。
如果您想自动确定阈值,您可能需要实现Otsu的方法。当您无法对图像中的像素分布做出太多假设时,该方法可以完成正确的工作。
http://en.wikipedia.org/wiki/Otsu%27s_Method
作为参考,这就是它在Mathematica中的样子:
对于Otsu的方法,Binarize[image, threshold]
和Binarize[img]
。
答案 1 :(得分:0)
您可以使用位图转换功能并将其写入输出流,然后使用输出流自行获取字节数组 我希望有帮助
答案 2 :(得分:0)
您可以查看此链接converting Java bitmap to byte array,它可以将位图转换为二进制,然后您应该查看display image from byteArray
答案 3 :(得分:0)
希望这会有所帮助......
Bitmap bitmapObtained =//get your bitmap
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmapObtained.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] byteArray = stream.toByteArray();
答案 4 :(得分:-1)
也许这是你的代码
imageID = cursor.getString(columnIndex);
// uri = Uri.withAppendedPath(Media.EXTERNAL_CONTENT_URI, "" + imageID);
Log.v("dklfdlk",imageID);
bitmap = BitmapFactory.decodeFile(imageID);
if (bitmap != null) {
newBitmap = Bitmap.createScaledBitmap(bitmap, 78, 78, true);
bitmap.recycle();
if (newBitmap != null) {
publishProgress(new LoadedImage(newBitmap));
}
试试这个