源图格式为bmp格式, 只要把一个图分成两个图就可以了  (切出来的小图,是什么格式都可以).

解决方案 »

  1.   

    import com.sun.image.codec.jpeg.JPEGImageEncoder;
    import com.sun.image.codec.jpeg.JPEGCodec;import java.io.File;
    import java.io.IOException;
    import java.io.FileOutputStream;
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.awt.image.Raster;/**
     * Created by IntelliJ IDEA.
     * User: wjLu
     * Date: 2006-4-27
     * Time: 14:37:52
     * To change this template use File | Settings | File Templates.
     */
    public class SplitImage {
        private File sourceFile;
        private Image sourceImage;    private int[][] coordinate;
        private String targetUrl = "";
        private int count = 0;
        private String adjTargetUrl = "";    private int sourceWidth;
        private int sourceHeight;    private BufferedImage prepBI;
        private BufferedImage splitedBI;    public SplitImage() {
            //To change body of implemented methods use File | Settings | File Templates.
        }    public SplitImage(String sourceUrl, String targetUrl, int[][] coordinate) {
            this.targetUrl = targetUrl;
            this.coordinate = coordinate;
            sourceFile = new File(sourceUrl);
            //是否为有效url
            if(sourceFile.canRead())
                try {
                    sourceImage = javax.imageio.ImageIO.read(sourceFile);
                } catch (IOException e) {
                    e.printStackTrace();
                }        this.sourceWidth = sourceImage.getWidth(null); //得到源图宽
            this.sourceHeight = sourceImage.getHeight(null); //得到源图长        //init
            prepBI = new BufferedImage(sourceWidth, sourceHeight, BufferedImage.TYPE_INT_RGB);        //预备BufferedImage
            Graphics g1 = prepBI.getGraphics();
            g1.setColor(Color.WHITE);
            g1.fillRect(0, 0, this.sourceWidth, this.sourceHeight);
            g1.drawImage(sourceImage, 0, 0, this.sourceWidth, this.sourceHeight, null);
        }    private void splitSingle(int x, int y, int lengthX, int lengthY) {
            splitedBI = new BufferedImage(lengthX, lengthY, BufferedImage.TYPE_INT_RGB);
            splitedBI = prepBI.getSubimage(x, y, lengthX, lengthY);        FileOutputStream out=null; //输出到文件流        try {
                out = new FileOutputStream(adjTargetUrl);
                JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
                encoder.encode(splitedBI); //近JPEG编码
                out.close();
                System.out.println("Created " + adjTargetUrl);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }    public void split() {
            for(int i = 0; i < coordinate.length; i++) {
                increase();
                splitSingle(coordinate[i][0], coordinate[i][1], coordinate[i][2], coordinate[i][3]);
            }
        }    private void increase() {
            this.count ++;
            String adjCount = "";
            for(int i = (count + "").length(); i < 4; i++)
                adjCount += "0";
            adjCount += count;
            this.adjTargetUrl = targetUrl.substring(0, targetUrl.lastIndexOf("."))
                    + adjCount
                    + targetUrl.substring(targetUrl.lastIndexOf("."));
        }    public static void main(String[] args) {
            SplitImage si = new SplitImage("images/4.bmp", "images/test.jpg", new int[][]{{10,10,30,30},{10,40,20,30},{10,10,30,30},{40,10,20,30}});
            si.split();    }
    }临时写的 参考下吧