黑马程序员技术交流社区
标题:
我把一张像素很高的照片分割成十份,最后怎么拼接出来的照片没有显示全部
[打印本页]
作者:
向日葵的曙光
时间:
2014-4-9 13:18
标题:
我把一张像素很高的照片分割成十份,最后怎么拼接出来的照片没有显示全部
package com.cg.test5;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
public class SplitFile {
public static void main(String[] args) throws IOException {
splitFile();
merge();
}
//将切割的碎片重新变成一个图片
public static void merge() throws IOException{
ArrayList<BufferedInputStream> al=new ArrayList<BufferedInputStream>();
BufferedInputStream bis=null;
for(int i=1;i<=10;i++){
FileInputStream fis= new FileInputStream("G:\\MyEclipse\\WorkPlace\\IOTest\\split\\"+(i++)+".part");
bis=new BufferedInputStream(fis);
al.add(bis);
}
final Iterator<BufferedInputStream> it=al.iterator();
Enumeration<BufferedInputStream> en=new Enumeration<BufferedInputStream>() {
public boolean hasMoreElements()
{
return it.hasNext();
}
public BufferedInputStream nextElement()
{
return it.next();
}
};
SequenceInputStream sis=new SequenceInputStream(en);
FileOutputStream fos=new FileOutputStream("0.jpg");
BufferedOutputStream bos=new BufferedOutputStream(fos);
byte [] buf=new byte[1024*1024];
int len=0;
while((len=sis.read(buf))!=-1){
fos.write(buf,0,len);
fos.flush();
}
sis.close();
bos.close();
}
//将一个文件切割成碎片
public static void splitFile() throws IOException{
FileInputStream fis=new FileInputStream("1.jpg");
FileOutputStream fos=null;
byte [] buf=new byte[1024*1024];
int len=0;
int count=1;
while((len=fis.read(buf))!=-1){
fos=new FileOutputStream("G:\\MyEclipse\\WorkPlace\\IOTest\\split\\"+(count++)+".part");
fos.write(buf,0,len);
fos.close();
}
fis.close();
}
}
作者:
晏敏
时间:
2014-4-12 19:25
当然显示不出来,文件不存在,怎么能显示?
改了一下结果 :读入 2.jpg 生成1.part 还原成1.jpg
package com.ymocean;
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.SequenceInputStream;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
public class SplitFile {
public static void main(String[] args) throws IOException {
splitFile();
merge();
}
//将切割的碎片重新变成一个图片
public static void merge() throws IOException{
ArrayList<BufferedInputStream> al=new ArrayList<BufferedInputStream>();
BufferedInputStream bis=null;
int i=1;
while(
new File("F:\\MyEclipse\\WorkSpaces\\test\\",i+".part").exists()
){//先看是否有文件再写入
FileInputStream fis= new FileInputStream("F:\\MyEclipse\\WorkSpaces\\test\\"+i+".part");
if(fis==null) break;
bis=new BufferedInputStream(fis);
al.add(bis);
i++;
}
final Iterator<BufferedInputStream> it=al.iterator();
Enumeration<BufferedInputStream> en=new Enumeration<BufferedInputStream>() {
public boolean hasMoreElements()
{
return it.hasNext();
}
public BufferedInputStream nextElement()
{
return it.next();
}
};
SequenceInputStream sis=new SequenceInputStream(en);
FileOutputStream fos=new FileOutputStream("1.jpg");
BufferedOutputStream bos=new BufferedOutputStream(fos);
byte [] buf=new byte[1024];
int len=0;
while((len=sis.read(buf))!=-1){
fos.write(buf,0,len);
fos.flush();
}
sis.close();
bos.close();
System.out.println("OK");
}
//将一个文件切割成碎片
public static void splitFile() throws IOException{
FileInputStream fis=new FileInputStream("2.jpg");
FileOutputStream fos=null;
byte [] buf=new byte[1024*1024];
int len=0;
int count=1;
while((len=fis.read(buf))!=-1){
fos=new FileOutputStream("F:\\MyEclipse\\WorkSpaces\\test\\"+count+".part");
fos.write(buf,0,len);
System.out.println(count);
count++;
}
fos.close();
fis.close();
System.out.println("OK");
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2