iv = (ImageView) findViewById (R.id.uploadImage);
//convert the image view into bitmap
iv.buildDrawingCache();
bmap = iv.getDrawingCache();
int red;
int newPixel = 0;
int threshold =230;
int width = bmap.getWidth();
int hieght = bmap.getHeight();
int[] pix = new int[width * hieght];
int[] pix2 = new int[width * hieght];
int alpha = 0;
bmap.getPixels(pix, 0, width, 0, 0, width, hieght);
//convert the image into white and black
for (int i=0;i<width;i++) {
for (int j=0;j<hieght;j++) {
int index = j * width + i;
red = (pix[index] >> 16) & 0xff;
alpha = (pix[index] >> 24) & 0xff;
if (red<threshold) {
newPixel = 0;
} else {
newPixel = 255;
}
newPixel = colorToRGB(alpha, newPixel, newPixel, newPixel);
bmap.setPixel(i, j, newPixel);
iv.setImageBitmap(bmap);
}
}
//convert the black and white image view into bitmap
bmap.getPixels(pix2, 0, bmap.getWidth(), 0, 0, bmap.getWidth(),bmap.getHeight());
StringBuilder builder = new StringBuilder();
for (int i :pix2) {
builder.append(" " + i + " ");
}
Toast.makeText(this, builder, Toast.LENGTH_LONG).show();
private static int colorToRGB (int alpha, int red, int green, int blue) {
int newPixel = 0;
newPixel += alpha;
newPixel = newPixel << 8;
newPixel += red; newPixel = newPixel << 8;
newPixel += green; newPixel = newPixel << 8;
newPixel += blue;
return newPixel;
}
这是logcat
08-12 08:52:32.887:D/DalvikVM(774):GC_CONCURRENT释放71K,7%释放2765K/2964K,暂停23ms+15ms,总计94ms
08-12 08:52:33.497:D/gralloc_goldfish(774):检测到没有GPU仿真的仿真器。
08-12 08:52:40.698:D/DalvikVM(774):GC_CONCURRENT释放63K,6%释放3087K/3272K,暂停73ms+3ms,总计165ms
08-12 08:52:49.397:我/编舞(774):跳过39帧!应用程序可能在其主线程上做了太多的工作。
08-12 08:52:54.568:D/DalvikVM(774):GC_FOR_ALLOC释放9K,5%释放3124K/3272K,暂停68ms,总计81ms
08-12 08:52:54.617:I/dalvikvm-heap(774):将堆(frag大小写)增长到6.166MB,用于3145744字节分配
08-12 08:52:54.778:D/DalvikVM(774):GC_FOR_ALLOC释放40K,4%释放6155K/6348K,暂停156ms,总计156ms
08-12 08:52:55.008:D/DalvikVM(774):GC_CONCURRENT释放<1k,4%释放6155k/6348k,暂停80ms+38ms,总计231ms
08-12 08:52:55.898:我/编舞(774):跳过412帧!应用程序可能在其主线程上做了太多的工作。
08-12 08:52:57.898:D/DalvikVM(774):GC_FOR_ALLOC释放38K,4%释放6119K/6348K,暂停28ms,总计30ms
08-12 08:52:57.929:I/dalvikvm-heap(774):将堆(frag大小写)增长到9.091MB,用于3145744字节分配
08-12 08:52:58.058:D/DalvikVM(774):GC_CONCURRENT释放<1k,3%释放9191k/9424k,暂停82ms+6ms,总计125ms
08-12 08:52:58.058:D/DalvikVM(774):WAIT_FOR_CONCURRENT_GC阻塞40ms
08-12 08:52:58.089:I/dalvikvm-heap(774):将堆(frag大小写)增长到12.090MB,用于3145744字节分配
08-12 08:52:58.218:D/DalvikVM(774):GC_FOR_ALLOC释放<1K,2%释放12263K/12500K,暂停125ms,总计126ms
08-12 08:52:58.288:D/DalvikVM(774):GC_CONCURRENT释放0K,2%释放12263K/12500K,暂停4ms+16ms,总计70ms
08-12 08:56:37.707:E/trace(886):打开跟踪文件时出错:没有这样的文件或目录(2)08-12 08:56:38.518:D/DalvikVM(886):GC_CONCURRENT释放41K,6%释放2805K/2968K,暂停13ms+3ms,总计77ms
08-12 08:56:38.518:D/DalvikVM(886):WAIT_FOR_CONCURRENT_GC阻塞10ms
08-12 08:56:38.727:D/gralloc_goldfish(886):检测到没有GPU仿真的仿真器。
08-12 08:56:55.107:D/DalvikVM(886):GC_FOR_ALLOC释放23K,5%释放3083K/3236K,暂停69ms,总计78ms
08-12 08:56:55.207:I/dalvikvm-heap(886):将堆(frag大小写)增长到6.126MB,用于3145744字节分配
08-12 08:56:55.367:D/DalvikVM(886):GC_FOR_ALLOC释放1K,3%释放6153K/6312K,暂停156ms,总计156ms
08-12 08:56:55.607:D/DalvikVM(886):GC_CONCURRENT释放4K,3%释放6149K/6312K,暂停80ms+32ms,总计245ms
08-12 08:56:56.747:我/编舞(886):跳过465帧!应用程序可能在其主线程上做了太多的工作。
08-12 08:58:03.287:D/DalvikVM(936):GC_CONCURRENT释放44K,6%释放2805K/2972K,暂停15ms+3ms,总计76ms
08-12 08:58:03.287:D/DalvikVM(936):WAIT_FOR_CONCURRENT_GC阻塞9ms
08-12 08:58:03.637:D/GRALLOC_GOLDFISH(936):检测到没有GPU仿真的仿真器。
可能是因为您正在转换的位图是零字节:
//convert the image view into bitmap
iv.buildDrawingCache();
bmap = iv.getDrawingCache();
试试看:
BitmapDrawable bd = (BitmapDrawable) iv.getDrawable();
bmap = bd.getBitmap();
希望这有帮助。
问题内容: 在我的Android应用程序中。我从jpeg图像的代码中获取了二进制代码,如下所示。 该字符串s打印图像的二进制值。我的问题是如何将这种二进制格式转换为jpeg图像? 问题答案: 我不太确定你想要什么 如果要直接从流中创建-instance,则可以使用 它,然后在-instance中显示它: imageView.setImageBitmap(image); 如果要将基数2的字符串表示形
问题内容: 我已经将图像插入数据库,并且我正在从数据库到服务器以及reactjs接收图像,但是在我的反应中,我接收到的图像具有二进制数据。但是我如何将二进制数据转换为图像中的反应。 问题答案: 将二进制数据转换为图像与无关,如果您拥有二进制数据,则将其转换为图像,如下所示:
问题内容: 有什么方法可以将图像转换为javascript中的二进制数据,反之亦然。 问题答案: 我想用JavaScript获取图像数据?回答您的问题: 将标签传递给此功能。它将以base64编码返回图像。但是它将被重新编码。因此,您无法访问原始图像数据。
问题内容: 使用Java的库如何将32bpp图像(ARGB)转换为16bpp图像(ARGB)?出于好奇,在像素级别上,此转换有什么作用?如果我有一个int值保存一个像素值(具有所有通道),那么在发生转换后,该int会有什么不同? 问题答案: 将32位AARRGGBB值转换为16位ARGB值将是这样的: 它会将所有内容粘贴在低16位中,而将高16位保留为0。 对于每个通道,您会丢失颜色信息的低4位,
主要内容:示例使用方法将灰度图像转换为二进制值图像。以下是此方法的语法。 该方法接受以下参数 - mat - 表示输入图像的对象。 dst - 表示输出图像的对象。 thresh - 表示阈值的整数。 maxval - 一个整数,表示与和阈值类型一起使用的最大值。 type - 表示转换类型的整数代码,例如RGB到灰度。 通过将代码与值一起传递给其余参数,可以将灰度图像转换为二值图像。 示例 以下程序演示如何将
问题内容: 我有一个要求用户将其图像上传到哪里,我必须将其转换为某种内容并将其发送到.Net REStful服务。我是angular js的新手。有人可以帮忙吗 问题答案: 我建议您使用 https://github.com/ninjatronic/angular- base64 。 在按照说明使用该库之后,您可以简单地调用: 不要忘记在模块中注入: