用io来实现,大家快来帮帮忙吧,小妹要急坏了!!!

麻雀正在努力变凤凰 2013-09-02 02:41:01
是把几个图片合成一个文件,再从这个文件中把这几个图片分离出来?
...全文
781 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
sprit2 2013-09-04
  • 打赏
  • 举报
回复
问问题就问问题。还非要带个小妹(实际上不是)。。。。有意思么
Landor2004 2013-09-04
  • 打赏
  • 举报
回复
都知道commons-io jar吧 其实还有一个commons-compress jar,apache出品的压缩解压缩工具包。
  • 打赏
  • 举报
回复
看到是妹子,俺来看看,给你顶顶。。。。。。
2013-09-03
  • 打赏
  • 举报
回复
只记得float ,int,那些可以按顺序存进去,然后再按顺序读取出来,图片~~
比特灵 2013-09-03
  • 打赏
  • 举报
回复
还是2楼的压缩好,将几个文件直接压缩为一个文件
okafor2011 2013-09-03
  • 打赏
  • 举报
回复
ImageIO
aaaabbbccd9876 2013-09-03
  • 打赏
  • 举报
回复
SequenceInputStream 不行?
jzq114 2013-09-03
  • 打赏
  • 举报
回复
读取图片嘛,就用ImageIcon这个类啦,要写入到文件嘛,可以用ObjectOutputStream这个类啦
  • 打赏
  • 举报
回复
如果没记错,commons-io-2.0.1.jar FileUtils应该有现成的api
小那啥 2013-09-03
  • 打赏
  • 举报
回复
刚写的纯粹文件流, 给分给分!!!
小那啥 2013-09-03
  • 打赏
  • 举报
回复

package test;

import java.io.*;

/**
 * 
 * @author 陈星宇
 * 纯手写, 请勿抄袭
 */
public class ImageUtil {

	public static void main(String[] args) throws IOException {
		//合成
		imageComposite("f:/1", "f:/2"); //	f:/1存放图片的文件夹,  f:/2生成新文件的文件夹
		
		//解析
		createImage("f:/2", "f:/3"); //		f:/2生成新文件的文件夹,  f:/3还原文件存放的文件夹
	}
	
	/**
	 * 图片合成
	 * @param inDir 存放图片的路径
	 * @param outDir 存放合成文件的路径
	 * @throws IOException
	 */
	public static void imageComposite(String inDir, String outDir) throws IOException{
		File file = new File(inDir);
		File[] files = file.listFiles();
		String fileName = createName(files);
		for(File f : files){
			writeFile(f, outDir+"/"+fileName);
		}
	}
	
	//生成文件名
	private static String createName(File[] files){
		StringBuilder s = new StringBuilder();
		for (File file : files) {
			s.append(file.length()+file.getName().substring(file.getName().indexOf("."))+",");
		}
		return s.toString();
	}
	
	//将文件写入
	private static void writeFile(File file, String fileName) throws IOException{
		FileInputStream fis = new FileInputStream(file);
		FileOutputStream fos = new FileOutputStream(fileName, true);
		byte[] b = new byte[1024];
		int sum;
		while((sum=fis.read(b))!=-1){
			fos.write(b, 0, sum);
		}
		fis.close();
		fos.close();
	}
	
	/**
	 * 图片合成
	 * @param inDir 存放合成文件的路径
	 * @param outDir 存放生成图片的路径
	 * @throws IOException
	 */
	public static void createImage(String inDir, String outDir) throws IOException{
		File f = new File(inDir);
		File[] files = f.listFiles();
		for (File file : files) {
			String[] imageNames = parseName(file);
			writeFile(file, imageNames, outDir);
		}
	}

	//解析出文件名
	private static String[] parseName(File file) {
		return file.getName().split(",");
	}
	
	//生成图片
	private static void writeFile(File file, String[] imageNames, String outDir) throws IOException {
		FileInputStream fis = new FileInputStream(file);
		for(String str : imageNames){
			FileOutputStream fos = new FileOutputStream(outDir+"/"+str, true);
			int size = getSize(str);
			byte[] b = new byte[size];
			fis.read(b);
			fos.write(b);
			fos.close();
		}
		fis.close();
	}
	
	//从文件名中获取文件长度
	private static int getSize(String s){
		return Integer.parseInt(s.substring(0, s.indexOf(".")));
	}
}



中华雪碧 2013-09-03
  • 打赏
  • 举报
回复
zip好些,将几个图片写到一个文件,要记录图片的起始位置,类型。什么的太麻烦
小那啥 2013-09-03
  • 打赏
  • 举报
回复
这还不简单, 一会哥给你代码,
S117 2013-09-02
  • 打赏
  • 举报
回复
试试随机流 记住每个文件的起始位置
末日哥 2013-09-02
  • 打赏
  • 举报
回复
楼上不都说了吗,用对象流。。ObjectOutputStream/ObjectInputStream 自己看看API
  • 打赏
  • 举报
回复
就是几张图片如何用io流如何输入/输出?如果有具体的代码是再好不过的了
失落夏天 2013-09-02
  • 打赏
  • 举报
回复
楼上的方法真的不错,可是如何用程序来实现呢? 我没试过,我设想只是可以使用对象流把图片写入一个文件,然后再用对象流把文件读出来。
蛋黄车 2013-09-02
  • 打赏
  • 举报
回复
搜索,java zip 压缩/解压缩

50,526

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧