
这是我们公司基类里的一个方法希望对你有帮助。。/
复制单个文件
@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画出图像等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)