A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jojo 中级黑马   /  2015-1-31 18:23  /  632 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

求大神帮忙解决问题
  1. //分割图片
  2.         public static void split(String str,String str2) throws Exception{
  3.                 FileInputStream fis = new FileInputStream(str);
  4.                 byte[] buf = new byte[1024*2];
  5.                 int ch = 0;
  6.                 int count = 1;
  7.                 while((ch = fis.read(buf)) != -1){
  8.                         String str3 =str2 + (count++)+ ".part";
  9.                         FileOutputStream fos = new FileOutputStream(str3);//存储碎片
  10.                         fos.write(buf, 0, ch);
  11.                         fos.close();
  12.                 }
  13.                 fis.close();
  14.         }

  15. //查找当前目录下所有的图片".part",用ArrayList存储
  16.         public static List<FileInputStream> findPig(String str) throws Exception{
  17.                 ArrayList<FileInputStream> list = new ArrayList<FileInputStream>();
  18.                 File f = new File(str);
  19.                 File[] files = f.listFiles();
  20.        
  21.                 for(File file:files){
  22.                         if(file.getName().endsWith(".part")){
  23.                                 list.add(new FileInputStream(file));
  24.                         }
  25.                 }
  26.                
  27.                 return list;
  28.         }

  29. //合并图片
  30. public static void  merge(String str1,String str2) throws Exception{
  31.                
  32.                 List<FileInputStream> list = new ArrayList<FileInputStream>();
  33.                
  34.                 list = findPig(str1);//获得碎片集合
  35.        
  36.                 final Iterator<FileInputStream> it = list.iterator();
  37.                 Enumeration<FileInputStream> em = new Enumeration<FileInputStream>(){

  38.                         public boolean hasMoreElements() {
  39.                                
  40.                                 return it.hasNext();
  41.                         }

  42.                         public FileInputStream nextElement() {
  43.                                
  44.                                 return it.next();
  45.                         }
  46.                 };
  47.                 SequenceInputStream sis = new SequenceInputStream(em);
  48.                 FileOutputStream fos = new FileOutputStream(str2);//存储合成图片
  49.                 byte[] buf = new byte[1024];
  50.                 int ch = 0;
  51.                 while((ch = sis.read(buf)) != -1){
  52.                         fos.write(buf, 0, ch);
  53.                 }
  54.                 fos.close();
  55.                 sis.close();
  56.                
  57.         }
复制代码


我的目的是先把图片切割成碎片,进行存储,然后对这些碎片合并,合并是成功了,但为什么合并后的图片打开是黑色的呢,而不是原图了呢?

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马