先调用android的系统工具,获取图片生成bitmap文件,再使用android中的二值化技术,将图片转化成黑白图片,主界面代码:

package com.example.blackwhite;

import java.io.IOException;

import android.media.ThumbnailUtils;

import android.net.Uri;

import android.os.Bundle;

import android.provider.MediaStore;

import android.app.Activity;

import android.content.ContentResolver;

import android.content.Intent;

import android.database.Cursor;

import android.graphics.Bitmap;

import android.graphics.Bitmap.Config;

import android.util.Log;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.ImageView;

import android.widget.TextView;

public class MainActivity extends Activity {

private final String IMAGE_TYPE = "image/*";

private final int IMAGE_CODE = 0; // 这里的IMAGE_CODE是自己任意定义的

private Button addPic = null;

private ImageView imgShow = null;

private TextView imgPath = null;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

init();

}

private void init() {

// TODO Auto-generated method stub

addPic = (Button) findViewById(R.id.btn_add);

imgPath = (TextView) findViewById(R.id.img_path);

imgShow = (ImageView) findViewById(R.id.imgShow);

addPic.setOnClickListener(listener);

}

private OnClickListener listener = new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

Button btn = (Button) v;

switch (btn.getId()) {

case R.id.btn_add:

setImage();

break;

}

}

private void setImage() {

// TODO Auto-generated method stub

// 使用intent调用系统提供的相册功能,使用startActivityForResult是为了获取用户选择的图片的地址

Intent getAlbum = new Intent(Intent.ACTION_GET_CONTENT);

getAlbum.setType(IMAGE_TYPE);

startActivityForResult(getAlbum, IMAGE_CODE);

}

};

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

// RESULT_OK 是系统自定义得一个常量

if (resultCode != RESULT_OK) {

Log.e("onActivityResult", "返回的resultCode出错");

return;

}

Bitmap bm = null;

// 外界的程序访问ContentProvider所提供数据 可以通过ContentResolver接口

ContentResolver resolver = getContentResolver();

// 判断接收的Activity是不是选择图片的

if (requestCode == IMAGE_CODE) {

try {

// 获得图片的地址Uri

Uri originalUri = data.getData();

//根据图片的URi生成bitmap

bm = MediaStore.Images.Media.getBitmap(resolver, originalUri);

//将图片转化成黑白图片

bm =convertToBlackWhite(bm);

//显得到bitmap图片

imgShow.setImageBitmap(bm);

// 新建一个字符串数组用于存储图片地址数据。

String[] proj = { MediaStore.Images.Media.DATA };

// android系统提供的接口,用于根据uri获取数据

Cursor cursor = managedQuery(originalUri, proj, null, null,

null);

// 获得用户选择图片的索引值

int column_index = cursor

.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

// 将游标移至开头 ,防止引起队列越界

cursor.moveToFirst();

// 根据索引值获取图片路径

String path = cursor.getString(column_index);

imgPath.setText(path);

} catch (IOException e) {

Log.e("getImg", e.toString());

}

}

}

/**

* 将彩色图转换为纯黑白二色

*

* @param 位图

* @return 返回转换好的位图

*/

public static Bitmap convertToBlackWhite(Bitmap bmp) {

int width = bmp.getWidth(); // 获取位图的宽

int height = bmp.getHeight(); // 获取位图的高

int[] pixels = new int[width * height]; // 通过位图的大小创建像素点数组

bmp.getPixels(pixels, 0, width, 0, 0, width, height);

int alpha = 0xFF << 24;

for (int i = 0; i < height; i++) {

for (int j = 0; j < width; j++) {

int grey = pixels[width * i + j];

//分离三原色

int red = ((grey & 0x00FF0000) >> 16);

int green = ((grey & 0x0000FF00) >> 8);

int blue = (grey & 0x000000FF);

//转化成灰度像素

grey = (int) (red * 0.3 + green * 0.59 + blue * 0.11);

grey = alpha | (grey << 16) | (grey << 8) | grey;

pixels[width * i + j] = grey;

}

}

//新建图片

Bitmap newBmp = Bitmap.createBitmap(width, height, Config.RGB_565);

//设置图片数据

newBmp.setPixels(pixels, 0, width, 0, 0, width, height);

Bitmap resizeBmp = ThumbnailUtils.extractThumbnail(newBmp, 380, 460);

return resizeBmp;

}

}

示例代码地址:

http://download.csdn.net/detail/stop_pig/8211315

android将彩图转为黑白_android 将图片转换成黑白图片相关推荐

  1. 小tip: 使用CSS将图片转换成黑白(灰色、置灰)[转]

    小tip: 使用CSS将图片转换成黑白(灰色.置灰) 这篇文章发布于 2012年08月19日,星期日,20:41,归类于 css相关, SVG相关. 阅读 159943 次, 今日 146 次 by ...

  2. [css] 使用css将图片转换成黑白的效果

    [css] 使用css将图片转换成黑白的效果 filter: saturate(0); 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, 但坚持一定很酷.欢迎大家一起讨论 主目录 与歌谣 ...

  3. 纯CSS将图片转换成黑白

    纯CSS将图片转换成黑白 几行代码就可以实现!效果非常好! 1. 正常效果截图 鼠标悬停前后,分别示下: 2. 非正常效果截图:代码设置的不同,显示的效果不同! 比如:下面的设置导致图片效果不好! 参 ...

  4. 中如何将方形图片转换成圆形图片_【PS】PS中不可不知的实用技巧!你都掌握了吗?...

    今天给大家分享一些在PS中经常用到的实用小技巧,操作简单易上手. 01 拉伸图片人物不变形 在我们在PS里想要拉伸一些图片时,里面的人物往往会跟着一起变形,那么如何改变图片比例的同时,又不影响人物的形 ...

  5. python制作ico图标_python使用PythonMagic k将jpg图片转换成ico图片的方法

    python使用PythonMagic k将jpg图片转换成ico图片的方法 发布时间:2017-06-27 08:00 来源:互联网 当前栏目:网页设计教程 这篇文章主要介绍了python使用Pyt ...

  6. MATLAB应用实战系列(七十一)-MATLAB实战应用案例:图像处理将灰度图片变成负片彩色图片转换成灰度图片

    前言 本文目录 获取图片的信息 将灰度图片变成负片 彩色图片转换成灰度图片 图像噪声的添加 加10次噪声 colorbar的使用 将数据转换为图片 clc clearA是结构体名,用来存储读入的图像数 ...

  7. pdf图片转换成word图片

    pdf图片转换成word图片 随着网络的迅速,纸质的书籍越来越少,但是还是有极少一部分人热衷于发行纸质书籍,这其中不乏一些好书,上次就在朋友家看到一本好书,于是将书名记下.但是在各大新华书店都没有找到 ...

  8. 【学习笔记】简易的24位BMP图片转换成灰度图片

    简易的24位BMP图片转换成灰度图片的C语言实现 使用C语言实现的一个简易的24位BMP图片转换成灰度图片的程序.需要先准备一张24位的BMP图片. 说明 RGB图片转换成灰度图片主要是使用这个公式: ...

  9. android 将图片转换成黑白图片

    先调用android的系统工具,获取图片生成bitmap文件,再使用android中的二值化技术,将图片转化成黑白图片,主界面代码: package com.example.blackwhite;im ...

  10. 如何把图片转换成渐进式图片

    优化图片加载体验,可以把图片改为渐进式图片.加载效果是先模糊,再清晰. 如果把图片转成渐进式图片呢? PS 编辑修改 代码转换 import os from PIL import Image # pi ...

最新文章

  1. 2021-12-09把文件夹1中的与文件夹2里同名图片删除或者保存至另一个文件夹
  2. 剑指offer二十二之从上往下打印二叉树
  3. Web Components系列(七) ——自定义组件的生命周期
  4. Linux stat
  5. java证书验证失败_SVN提示https证书验证失败解决办法
  6. 在线批量将gps经纬度坐标转换为百度经纬度坐标
  7. C 语言之父丹尼斯·里奇逝世十周年
  8. MTK平台系统稳定性分析
  9. IOS开发-苹果开发者中心 提示 edit phone number
  10. 使用Sbert预训练的TTS模型《Expressive Text-to-Speech using Style Tag》
  11. 学习遇见狂神说的Java
  12. 【修真院“善良”系列之十七】请拿好这支时间之箭
  13. IOS开发之——AFN-网络状态监控(04)
  14. 淘宝网店应该怎么样去做好宝贝SEO优化?
  15. Django admin后台美化(极其简单)
  16. 网易有道难题,铩羽而归。
  17. LM13丨形态量化-动量周期分析
  18. 今天北京的天空是湛蓝的
  19. 世界各国谷歌(Google)网址大全
  20. 智慧工地大型机械监测北斗定位工业终端解决方案

热门文章

  1. 三星BESPOKE家电系列海外发布会看点一览,定制化设计成未来家居首选
  2. python画聚类树状图_如何在scipy/matplotlib中绘制和标注层次聚类树状图
  3. Bit Miracle Jpegv2.1.1117
  4. 双代号网络图节点编号原则_网络绘图进行的节点编号时原则
  5. 【智能制造】歌尔股份打造面向可重构和微服务的可穿戴产品智慧工厂
  6. C盘空间不足怎么办?教你将其他盘存储空间分给C盘
  7. android恢复短信中心号码,短信中心号码怎么查 安卓手机查看短信中心号码方法...
  8. 小马激活软件报错 can not open file:C\OEMSF
  9. Python模拟用户自动登陆网易126邮箱
  10. 论文常用图表一:柱状图【MATLAB】