java里边怎样对图片的像素矩阵进行修改并输出?

huluwaandfuwa 2015-12-15 01:33:15
package logistic;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.imageio.ImageIO;
import javax.imageio.stream.FileImageOutputStream;

public class TestEncryption {

public static void main(String [] args) throws IOException{

//1.创建一个对象
ImageOne image1=new ImageOne();
//2.给Logistic赋初值,用于产生一段二进制随机数
image1.setInitialx0(0.996);
//3.读入图像文件
InputStream in = new FileInputStream("D:\\IMG_0029.JPG");
BufferedImage bi = ImageIO.read(in);
//OutputStream out =new FileOutputStream("D:\\bee1.jpg");
//4.求出图像的宽和高
int w=bi.getWidth();
int h=bi.getHeight();
int[] rgbArray=new int[w*h];
bi.getRGB(bi.getMinX(), bi.getMinY(), bi.getWidth(), bi.getHeight(), rgbArray, 0, 1);

System.out.println("");
int [] c=image1.intArray2bit(rgbArray,w,h);
//加密阶段
//产生二进制混沌序列
int [] g=image1.genericLogistic(0.996, w, h);
int [] d=image1.xor(c, g, w, h);

int[] rgbArray1=new int[w*h];
rgbArray1=image1.bit2intArray(d, w, h);

File file = new File("D:\\bee2.jpg");
bi.setRGB(0, 0, 220, 0,rgbArray1, 0, 1);//不知道这块为什么要把h写成越小越好

//bi.setRGB(0, 0, 220, 164,rgbArray1, 0, 1);
bi = bi.getSubimage(0,0,w,h);
ImageIO.write(bi, "jpg", file);
in.close();
}
}
//这个代码中的bi中的像素数组怎么没有变化?怎么改变它?
//我这个程序的目的是:读取一副图片,然后改变它的像素值,再输出来
。希望不吝赐教,谢谢
...全文
272 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
huluwaandfuwa 2015-12-16
  • 打赏
  • 举报
回复
已解决。。。

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧