黑马程序员技术交流社区
标题:
关于使用字节流复制图片的问题
[打印本页]
作者:
杜成龙
时间:
2013-9-28 15:46
标题:
关于使用字节流复制图片的问题
本帖最后由 杜成龙 于 2013-10-1 09:30 编辑
下面的代码是使用字节流来复制一个图片:
import java.io.*;
class CopyDemo2
{
public static void main(String[] args)
{
FileInputStream fis=null;
FileOutputStream fos=null;
try
{
//创建读取流对象,关联要被复制的图片
fis=new FileInputStream("1.jpg");
//创建写入流对象,创建复制生成图片的名称
fos=new FileOutputStream("1.copy_jpg");
int len=0;
//创建字节数组
byte[] buf=new byte[1024];
//向数组中读入数据并判断
while((len=fis.read(buf))!=-1)
{
//把数组中的数据写出
fos.write(buf);
}
}
catch (IOException e)
{
throw new RuntimeException("复制失败");
}
finally
{
if(fis!=null)
try
{
//关闭流资源
fis.close();
}
catch (IOException e)
{
throw new RuntimeException("关闭失败");
}
if(fos!=null)
try
{
//关闭流资源
fos.close();
}
catch (IOException e)
{
throw new RuntimeException("关闭失败");
}
}
}
}
复制代码
程序中有这几行代码:
byte[] buf=new byte[1024];
//向数组中读入数据并判断
while((len=fis.read(buf))!=-1)
{
//把数组中的数据写出
fos.write(buf);
}
这里写的是fos.write(buf);而不是fos.write(buf,0,len);为什么还是能复制出正确的图片呢?
作者:
周文斌
时间:
2013-9-28 16:08
骚年,这可不是代码问题!
你说的复制成功是什么意思?
咱们说的复制成功指得是,图像显示的出来,然后大小一样。
你这样复制出来大小肯定不一样。
至于为什么能显示成功~~那是图像压缩的算法问题~~@ @
我想咱们不用讨论jpg格式无损压缩算法的容错能力吧,,
作者:
罗凯健
时间:
2013-9-28 16:50
这两张图片的大小不一样,最后一次长度没有1024的话,一样会输入1024个字节进文件。。
所以复制出来的图片要比原图大。
作者:
javamov
时间:
2013-9-28 17:46
本帖最后由 javamov 于 2013-9-28 17:47 编辑
copy的图片的字节数大于原图片
但复制中图片的编码形式没有改变,只是结尾多了一些为0的字节数。
并不影响图片的浏览
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2