源图格式为bmp格式, 只要把一个图分成两个图就可以了 (切出来的小图,是什么格式都可以).
解决方案 »
- 想做个多线程下载的项目
- JCreator Pro 的一些问题,用过的朋友来看下
- 这里有阿里软件的人吗,或者有谁知道阿里软件互联平台的技术框架和技术细节,
- 学会JAVA要多长时间?请各位高手告诉小弟一声
- 怎么从键盘上输入一个整数,然后判断它的字节数再输出到屏幕上?
- 请高手指点一下.如何在我写的GUI程序中,调用硬盘上的声音文件?具体如何实现?
- 请教错在哪里?
- 简单问题(有何不一样)??????
- 怎么计算这个值“((3*4)+(8/4))*2+3”
- Sep 19 2002 10:32AM ----------这样的字符串怎样转换为日期格式?
- 用HTTP实现大文件下载时,断点续传问题,欢迎讨论,分数追加...
- 目前最快的N皇后问题算法!!!
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(); }
}临时写的 参考下吧