用Java编写一个程序,将一个图像文件复制到指定的文件夹中

用Java编写一个程序,将一个图像文件复制到指定的文件夹中,第1张

这是我们公司基类里的一个方法希望对你有帮助。。/

复制单个文件

@param oldPath String 原文件路径 如:c:/fqftxt

@param newPath String 复制后路径 如:f:/fqftxt

@return boolean

/

public void copyFile(String oldPath, String newPath) {

try {

int bytesum = 0;

int byteread = 0;

File oldfile = new File(oldPath);

if (oldfileexists()) { //文件存在时

InputStream inStream = new FileInputStream(oldPath); //读入原文件

FileOutputStream fs = new FileOutputStream(newPath);

byte[] buffer = new byte[1444];

int length;

while ( (byteread = inStreamread(buffer)) != -1) {

bytesum += byteread; //字节数 文件大小

// Systemoutprintln(bytesum);

fswrite(buffer, 0, byteread);

}

inStreamclose();

}

}

catch (Exception e) {

Systemoutprintln("复制单个文件 *** 作出错");

eprintStackTrace(); } }

关于图像转换的方式,实际上 *** 作的是图像的字节流。我的工作中遇到过将bmp文件压缩为jpg以便于网络传输的课题。所以我这里重点介绍bmp转为jpg的一个方法。

实际上,我更喜欢使用以前sun公司内部使用的api提供的转换方法,这里使用到了两个很重要的类:

comsunimagecodecjpegJPEGCodec

comsunimagecodecjpegJPEGImageEncoder

需要注意的是,它们所属的一个jar包不存在于编译目录下,但存在于运行目录下,所以我们首先需要在jre文件下找到rtjar并导入进来以使得编译通过。

我改写了网上的一个转换代码,所得代码如下:

此外,原sun公司开源的jar包jai_corec_113jar也提供了格式的转码方式,这里也提供了转码方式,仅供参考:

备注:亲自尝试,当从jpg转bmp时会转很久很久时间(看不到尽头),转得的文件可以很大,所以建议不要使用。

drawimage都是对Image对象处理,和组件的绘制一点关系也没;

把newImage的图再画到image里面去;

实例代码如下:

public class Tank extends JFrame {

private Image img = null;

boolean fi = false;

BufferedImage bi;

public Tank() {

 thisaddKeyListener(new KeyMonitor());

 thissetBounds(300, 300, 300, 300);

 thissetVisible(true);

 

 thissetDefaultCloseOperation(TankEXIT_ON_CLOSE);

}

class KeyMonitor extends KeyAdapter {

 @Override

 public void keyPressed(KeyEvent e) {

  switch (egetKeyCode()) {

 

  case 37: {

   

   img = getToolkit()createImage("res/TankPic/preGIF");

   

   fi = true;

   Systemoutprintln(img);

   repaint();

   break;

  }

  }

 

 }

}

public void paint(Graphics g) {

 superpaint(g);

 

 bi = new BufferedImage(getSize()width, getSize()height, BufferedImageTYPE_INT_ARGB);

 bigetGraphics();

 if (fi) {

  g = imggetGraphics();

  gdrawImage(bi, 50, 50, 40, 40, this);

 }

}

public static void main(String[] args) {

 new Tank();

}

}

流程不外乎是

读取图像文件

扫描噪点;

去除噪点;

保存图像文件。

Java2D *** 作好像使用BufferedImage读取图像文件最方便,有一阵没弄这了,忘了。应该可以读取JPG,PNG,GIF图像。

识别噪点应该有专门的算法,我没研究过,百度一下应该能找到专门算法,然后写段代码就可以。我个人以为是独立一个像素与周围一定范围内的像素差异过大,就认为是噪点。可以有亮度,色相上的差别。BufferedImage可以读取每个像素的RGB,从而能识别色相的差别;还有个矩阵,用来由RGB计算亮度的,也就可以计算亮度差别了,这个网上都能找到。

输出也使用BufferedImage就可以。

关键是每个像素都要和周围像素比较,还要计算亮度,最少是三重循环了,如何提高效率是个大问题了。这个代码写好了也算一个高手了。

1)文件要有后缀名

2)要用Image或BufferedImage对象

3)因为你重写了paint()方法,所以不能在Label里面显示。你重写了paint()方法后,整个容器都会变成画布,所以看不到Label组件,自然也就看不到。应该在paint方法里面用gdrawImage方法把在画布中画出来。参考Java API,Graphics的drawImage方法。

以上就是关于用Java编写一个程序,将一个图像文件复制到指定的文件夹中全部的内容,包括:用Java编写一个程序,将一个图像文件复制到指定的文件夹中、如何用JAVA转换图像格式、java 如何用BufferedImage画出图像等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9817273.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存