先调用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. day1作业(格式化输出)
  2. 朋友们请珍重自己的身体
  3. his系统存储服务器,关于HIS服务器及存储建设的前瞻性需求报告
  4. 谈谈我对服务熔断、服务降级的理解
  5. oracle使用shutdown immediate前应做
  6. 前端学习(2889):如何短时间内实现v-for 模板编译21
  7. unity自动生成敌人_Unity 3D做2D坦克大战--敌人自动攻击AI编写
  8. word2016能识别linux换行符,word文章中的换行符如何批量替换为回车符
  9. Nginx的UDP健康检查
  10. 微信小程序和vue双向绑定哪里不一样_浅析Vue 和微信小程序的区别、比较
  11. Ubuntu IP设置为静态
  12. c++ opencv编程实现暗通道图像去雾算法_OpenCV图像处理专栏十三 | 利用多尺度融合提升图像细节...
  13. 微服务的简介和技术栈,太牛逼了!
  14. 数据结构和算法——树结构(二叉树的创建、查找、遍历和删除)
  15. 浅谈分块二元Hermite插值
  16. MVP架构实例讲解-登录界面
  17. 网易互娱9.05笔试
  18. 【MySQL】在线无锁无延迟DDL神器gh-ost
  19. Kafka 2.8.0 学习
  20. ul li列表样式css,列表ul li 专用样式

热门文章

  1. 门店电子会员卡系统,积分储值卡金额会员卡功能,JavaScript 局部作用域
  2. java poc_spring系列cve poc编写
  3. 交换机组播风暴_cisco 交换机端口广播风暴设置(非常详细)
  4. 计算机管理为什么不能扩展卷,Win10 C盘不能扩展卷怎么解决?
  5. python调用foxmail 发邮件_foxmail 收取已发送邮件
  6. d3.js学习10----折线图的制作
  7. C - 小型Basic编译器问题
  8. 搜索引擎的高级搜索语法指令
  9. mysql 单表 子查询_04 数据库入门学习-单表查询、多表查询、子查询(示例代码)...
  10. 广告文案:用文案讲好故事的广告是如何做?