现在要做一个图片合并的功能,需要根据图片ftp地址,先从ftp读取2张图片,然后将2张图片合并,再保存到ftp服务器上去,
该如何做呢。
- Java code
public static void main(String[] args) { // TODO Auto-generated method stub try { // 读取第一张图片 File fileOne = new File("ftp://odin:pass@127.0.0.1:21//0000//00083//20110531//00//X00R00083D1L01I000V000N61794T20110531000539875F7109A000Z00875034S31-1.jpg"); BufferedImage ImageOne = ImageIO.read(fileOne); int width = ImageOne.getWidth();// 图片宽度 int height = ImageOne.getHeight();// 图片高度 // 从图片中读取RGB int[] ImageArrayOne = new int[width * height]; ImageArrayOne = ImageOne.getRGB(0, 0, width, height, ImageArrayOne,0, width); // 对第二张图片做相同的处理 File fileTwo = new File("ftp://odin:pass@127.0.0.1:21//0000//00008//20110520//14//X01R00008D1L01I000V000N31234T20110520143010555F0000A000Z00555557S31-1.jpg"); BufferedImage ImageTwo = ImageIO.read(fileTwo); int[] ImageArrayTwo = new int[width * height]; ImageArrayTwo = ImageTwo.getRGB(0, 0, width, height, ImageArrayTwo,0, width); // 生成新图片 // BufferedImage ImageNew = new BufferedImage(width * 2, height, // BufferedImage.TYPE_INT_RGB); BufferedImage ImageNew = new BufferedImage(width*2, height,BufferedImage.TYPE_INT_RGB); ImageNew.setRGB(0, 0, width, height, ImageArrayOne, 0, width);// 设置左半部分的RGB ImageNew.setRGB(width, 0, width, height, ImageArrayTwo, 0, width);// 设置右半部分的RGB File outFile = new File("D:\\out1.jpg"); ImageIO.write(ImageNew, "jpg", outFile);// 写图片 }catch (Exception e) { e.printStackTrace(); } }
File fileOne = new File("ftp://odin:pass@127.0.0.1:21//0000//00083//20110531//00//X00R00083D1L01I000V000N61794T20110531000539875F7109A000Z00875034S31-1.jpg");
报错:javax.imageio.IIOException: Can't read input file!
------解决方案--------------------
File fileOne = new File("ftp://odin:pass@127.0.0.1:21//0000//00083//20110531//00//X00R00083D1L01I000V000N61794T20110531000539875F7109A000Z00875034S31-1.jpg");
FILE是文件句柄...没有这么神奇...还能自适应FTP的...
JDK本身有FTP的处理包,位于sun.net.ftp
也有很多第三方的工具包
具体GOOGLE之