java如何处理灰度图片_Java图片的灰度处理方法
通过看网上各种大牛的总结,和自己亲身测试总结一下Java图片的灰度处理方法
(1)我们熟知的图片中的像素点有RGB值。
(2)图片灰度化的方式大概分为四种,第一种是最大值法(取颜色RGB中的最大值作为灰度值);第二种是最小值法(取颜色RGB的最小值作为灰度值);第三种是均值法(取颜色的RGB的平均值作为灰度值);第四种是加权法灰度化(怎么加权最合适,效果最好,百度百科说的很全面)。
(3)废话不多说,记录一下我按照上述四种方法实现的效果和代码:
原图
按照上述四种方式分别灰度化后的效果如下面四图
(4)实例代码如下
package testhuidu;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class TestHUidu {
/**
* 颜色分量转换为RGB值
* @param alpha
* @param red
* @param green
* @param blue
* @return
*/
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;
}
public static void main(String[] args) throws IOException {
grayImage(1,"ff.jpg", "1.jpg");//最大值法灰度化
grayImage(2,"ff.jpg", "2.jpg");//最小值法灰度化
grayImage(3,"ff.jpg", "3.jpg");//平均值法灰度化
grayImage(4,"ff.jpg", "4.jpg");//加权法灰度化
}
/**
* 图片灰度化的方法
* @param status 灰度化方法的种类,1表示最大值法,2表示最小值法,3表示均值法,4加权法
* @param imagePath 需要灰度化的图片的位置
* @param outPath 灰度化处理后生成的新的灰度图片的存放的位置
* @throws IOException
*/
public static void grayImage(int status,String imagePath, String outPath) throws IOException {
File file = new File(imagePath);
BufferedImage image = ImageIO.read(file);
int width = image.getWidth();
int height = image.getHeight();
BufferedImage grayImage = new BufferedImage(width, height, image.getType());
//BufferedImage grayImage = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY);
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
int color = image.getRGB(i, j);
final int r = (color >> 16) & 0xff;
final int g = (color >> 8) & 0xff;
final int b = color & 0xff;
int gray=0;
if(status==1){
gray=getBigger(r, g, b);//最大值法灰度化
}else if(status==2){
gray=getSmall(r, g, b);//最小值法灰度化
}else if(status==3){
gray=getAvg(r, g, b);//均值法灰度化
}else if(status==4){
gray = (int) (0.3 * r + 0.59 * g + 0.11 * b);//加权法灰度化
}
System.out.println("像素坐标:" + " x=" + i + " y=" + j + " 灰度值=" + gray);
grayImage.setRGB(i, j, colorToRGB(0, gray, gray, gray));
}
}
File newFile = new File(outPath);
ImageIO.write(grayImage, "jpg", newFile);
}
//比较三个数的大小
public static int getBigger(int x,int y,int z){
if(x>=y&&x>=z){
return x;
}else if(y>=x&&y>=z){
return y;
}else if(z>=x&&z>=y){
return z;
}else{
return 0;
}
}
//比较三个是的大小取最小数
public static int getSmall(int x,int y,int z){
if(x<=y&&x<=z){
return x;
}else if(y>=x&&y>=z){
return y;
}else if(z>=x&&z>=y){
return z;
}else{
return 0;
}
}
//均值法
public static int getAvg(int x,int y,int z){
int avg=(x+y+z)/3;
return avg;
}
}
java如何处理灰度图片_Java图片的灰度处理方法相关推荐
- java join使用实例_Java多线程中关于join方法的使用实例解析
先上代码 新建一个Thread,代码如下: package com.thread.test; public class MyThread extends Thread { private String ...
- 海信JAVA开发笔试题_JAVA设计模式之【工厂方法模式】
看例子 1.TV产品接口,负责播放 public interface TV // TV接口 { public void play(); } 2.TV工厂接口,负责生产产品 public interfa ...
- Java 比较图片_Java图片比对
在自动化测试中,除了普通的值验证,经常还有一些图片验证,比如图片的匹配率,输出图片的差异图片等.本文主要用到了BufferedImage类来操作图片比对和输出差异图片,大体的思路如下: 1. 通过Im ...
- java ftp传图片_Java 图片上传方式一 : ftp 图片服务器
一 : Linux ftp 图片服务器 1. Linux 安装 ftp linux服务器配置 安装ftp yum install vsftpd 启动服务 service vsftpd start 开机 ...
- java修改图章图片_Java处理PDF图章的方法示例(代码)
本篇文章给大家带来的内容是关于Java 处理PDF图章的方法示例(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 图章(印章)是一种在合同.票据.公文等文件中表明法律效应.部门 ...
- java打包 图片_Java 图片爬虫,java打包jar文件
[TOC] 1. Java 图片爬虫,制作 .jar 文件 spider.java spider.java 高清图片api : https://www.xwboke.cn/api/api.php ,每 ...
- java实现上传图片代码_Java图片上传实现代码
本文实例为大家分享了java图片上传代码,供大家参考,具体内容如下 import java.io.*; import java.net.*; /* *发送端 */ class picsend { pu ...
- java ajax上传图片插件_java图片上传并预览,前台用jQuery插件AjaxFileUpload,后台用FileUtils.copyFile....
个人笔记,以备后用. 表体代码: 查看图片 js代码(记得要引入jquery库和ajaxfileupload库): //上传文件id号 function fileUpload(uploadFileId ...
- java不显示图片_Java图片显示不出来,怎么解决
展开全部 有两个问题:图片路径没有写对,图片在 src 下,图片路径应是 src/海洋.png,正e68a84e8a2ad62616964757a686964616f31333365656632确的写 ...
最新文章
- IDEA工具基本设置
- 使用分页插件的后悔药(二)
- apache tomcat 整合
- 操作主机 RID matser
- app接口开发(php)
- 为TFS配置跨平台的生成服务器Xplat (Ubuntu Linux)
- STM32低功耗模式测试
- 前端界面根据条件动态显示图片
- pip常用命令、配置pip源
- MVC5+EF6--1 创建Entity Framework数据模型
- 把我的漫画浏览器后台程序迁移到GAE上了
- python下载大文件mp4_Python 实现视频爬取下载及断点续传优化、异步下载
- android ios av tv,无需Apple TV的AirPlay镜像的顶级4解决方案您应该知道
- safari遮罩无效
- 分享学JavaScript的第七天
- 移动端事件--touch事件的分类、touch事件的event对象、 其他触摸事件
- JavaScript全套课程-张鹏-专题视频课程
- 谷歌浏览器在新页面打开_如何在Google文档中更改页面方向
- [工具类] 系列二 Lettuce 访问Redis 工具类 RedisUtil
- 计算机属性高级是灰色的,Win10文件夹属性隐藏选项为灰色不可勾选怎么办?
热门文章
- 转:javascript方法--bind()
- linux 中文意思,linux 中 ~/. 是什么意思
- ladder怎么读_ladder 是什么意思_ladder 的翻译_音标_读音_用法_例句_爱词霸在线词典...
- faiss python安装_faiss入门
- 使用python打印数字三角形_11届省赛python试题 H: 数字三角形
- 判断星座PHP,php根据日期判断星座的函数分享_PHP教程
- oracle 9i hwm,Oracle 10g HWM原理及性能优化
- Leetcode-2 两数相加【c语言】
- STM32-GPIO学习-跑马灯实验和按键实验-寄存器版本和HAL库版本
- (连续子序列)唯一的雪花