一个比较苯的办法,做两张图,一张是缩略图,一张是实际图,
如果不考虑算法,那么只能控制图片大小,却控制不了它的大小。
要么就用一些图形处理的算法,部分读取。
如果不考虑算法,那么只能控制图片大小,却控制不了它的大小。
要么就用一些图形处理的算法,部分读取。
解决方案 »
- 调用线程池中一个方法,传递给线程池一个task,获取执行的线程
- 请教下J2SE方面的学习经验!!
- 在eclipse里,是不是,在程序中必须有一个类的名字,左边树的类名字一样.否则无法Run??
- mark()方法怎么用?里面参数代表什么意思?
- 怎样设置环境变量
- 紧急救援~~~~~~~~~~~~~~~~~~~~
- 如何在java中实现广播?
- 关于网络编程的习题
- 自学Java 求大师看看 我的spring和hibernate整合老是报错,一直找不到原因
- super调用父类构造器放在什么位置?
- j2sdk1.4.0 in winxp!
- 各位高手,小弟現在想選學Java,是否學Java真的很有"錢途",大家都進來談談經驗??
import java.awt.image.BufferedImage;
import java.awt.Image;
import java.awt.Graphics2D;
import java.awt.image.AffineTransformOp;
import java.awt.image.RescaleOp;
import javax.imageio.ImageIO;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.awt.geom.AffineTransform;public class ThumbNail{
String fromdir="";
String todir="";
String imgfile="";
String sysimgfile="";
String ext="jpg"; //默认图片格式
int size=0;
public ThumbNail(){}
public boolean CreateThumbnail() throws Exception
{ double Ratio=0.0;
BufferedImage Bi=null;
Image Itemp=null;
BufferedImage img11=null; File F = new File(fromdir,imgfile);
if (!F.isFile())
throw new Exception(F+" is not image file error in CreateThumbnail!"); File ThF = new File(todir,sysimgfile+"."+ext); try{
Bi = ImageIO.read(F);
int BW=(int)(size*Bi.getWidth()/Bi.getHeight());
int BH=size;
Itemp = Bi.getScaledInstance (BW,BH,Bi.SCALE_SMOOTH);
BufferedImage BImg=null; try{
if (Bi.getHeight()>size){
Ratio =(double)(size)/Bi.getHeight();
}
AffineTransformOp op = new AffineTransformOp(AffineTransform.getScaleInstance(Ratio, Ratio), null);
BImg=op.filter(Bi, null);
}catch(Exception ex){
BImg=new BufferedImage(Itemp.getWidth(null),Itemp.getHeight(null),BufferedImage.TYPE_INT_RGB);
Graphics2D g2= BImg.createGraphics();
g2.drawImage(Itemp,0,0,null);
} ImageIO.write((BufferedImage)BImg, ext, ThF);
}catch (Exception ex) {
this.saveJust();
System.out.println(" ImageIo.write error in CreatThum: "+ex.getMessage());
return false;
}
return (true);
}
public void saveJust()
{
try{
File F = new File(fromdir,imgfile);
if (!F.isFile())
throw new Exception(F+" is not image file error in CreateThumbnail!");
File ThF = new File(todir,imgfile);
FileInputStream fis=new FileInputStream(F);
FileOutputStream fos=new FileOutputStream(ThF);
byte[] b = new byte[255];
int bRead=0;
while((bRead=fis.read(b))>-1)
fos.write(b,0,bRead);
fos.close();
fis.close();
}catch(Exception e)
{
}
}
public void setfromdir(String str)
{
fromdir=str;
}
public void settodir(String str)
{
todir=str;
}
public void setimgfile(String str)
{
imgfile=str;
}
public void setsysimgfile(String str)
{
for(int i=str.length()-1;i>=0;i--)
if(str.charAt(i)=='.'){
sysimgfile=str.substring(0,i);
i=-1;
return;
}
sysimgfile=str;
}
public void setsize(int s)
{
size=s;
}
public void setext(String str)
{
ext=str;
} /*public static void main(String args[])
{
ThumbNail tn=new ThumbNail();
tn.setsize(100);
tn.setfromdir("d:/javaTest/");
tn.setimgfile("abc.jpg");
tn.settodir("d:/");
tn.setsysimgfile("trytr");
try{
if(tn.CreateThumbnail())
System.out.println("succed");
}catch(Exception e){
System.out.println("failed to create the thumbnail"); }
}*/
}认真看吧