import
?java.io.
*
;
import
?java.awt.
*
;
import
?java.awt.image.
*
;
import
?com.sun.image.codec.jpeg.
*
;

/**?*/
/**
?*
?*?<p>Title:?Thumbnail</p>
?*
?*?<p>Description:?Picture?Thumbnail</p>
?*
?*?<p>Copyright:?Copyright?(c)?54powerman@163.com?2005</p>
?*
?*?<p>Company:?
http://blog.sina.com.cn/u1055000490
</p>
?*
?*?
@author
?54powerman
?*?
@version
?1.0
?
*/
public
?
class
?Thumbnail?
{
??
private
?String?srcFile;
??
private
?String?destFile;
??
private
?
int
?width;
??
private
?
int
?height;
??
private
?Image?img;

??
public
?
static
?
void
?main(String[]?args)?
throws
?Exception?
{
????Thumbnail?thum?
=
?
new
?Thumbnail(
"
Winter.png
"
);
????thum.resizeFix(
500
,?
300
);
??}
??
/**?*/
/**
???*?構(gòu)造函數(shù)
???*?
@param
?fileName?String
???*?
@throws
?IOException
???
*/
??
public
?Thumbnail(String?fileName)?
throws
?IOException?
{
????File?_file?
=
?
new
?File(fileName);?
//
讀入文件
????
this
.srcFile?
=
?_file.getName();
????
this
.destFile?
=
?
this
.srcFile.substring(
0
,?
this
.srcFile.lastIndexOf(
"
.
"
))?
+
????????
"
_s.jpg
"
;
????img?
=
?javax.imageio.ImageIO.read(_file);?
//
構(gòu)造Image對(duì)象
????width?
=
?img.getWidth(
null
);?
//
得到源圖寬
????height?
=
?img.getHeight(
null
);?
//
得到源圖長(zhǎng)
??}
??
/**?*/
/**
???*?強(qiáng)制壓縮/放大圖片到固定的大小
???*?
@param
?w?int?新寬度
???*?
@param
?h?int?新高度
???*?
@throws
?IOException
???
*/
??
public
?
void
?resize(
int
?w,?
int
?h)?
throws
?IOException?
{
????BufferedImage?_image?
=
?
new
?BufferedImage(w,?h,
?????????????????????????????????????????????BufferedImage.TYPE_INT_RGB);
????_image.getGraphics().drawImage(img,?
0
,?
0
,?w,?h,?
null
);?
//
繪制縮小后的圖
????FileOutputStream?out?
=
?
new
?FileOutputStream(destFile);?
//
輸出到文件流
????JPEGImageEncoder?encoder?
=
?JPEGCodec.createJPEGEncoder(out);
????encoder.encode(_image);?
//
近JPEG編碼
????out.close();
??}
??
/**?*/
/**
???*?按照固定的比例縮放圖片
???*?
@param
?t?double?比例
???*?
@throws
?IOException
???
*/
??
public
?
void
?resize(
double
?t)?
throws
?IOException?
{
????
int
?w?
=
?(
int
)?(width?
*
?t);
????
int
?h?
=
?(
int
)?(height?
*
?t);
????resize(w,?h);
??}
??
/**?*/
/**
???*?以寬度為基準(zhǔn),等比例放縮圖片
???*?
@param
?w?int?新寬度
???*?
@throws
?IOException
???
*/
??
public
?
void
?resizeByWidth(
int
?w)?
throws
?IOException?
{
????
int
?h?
=
?(
int
)?(height?
*
?w?
/
?width);
????resize(w,?h);
??}
??
/**?*/
/**
???*?以高度為基準(zhǔn),等比例縮放圖片
???*?
@param
?h?int?新高度
???*?
@throws
?IOException
???
*/
??
public
?
void
?resizeByHeight(
int
?h)?
throws
?IOException?
{
????
int
?w?
=
?(
int
)?(width?
*
?h?
/
?height);
????resize(w,?h);
??}
??
/**?*/
/**
???*?按照最大高度限制,生成最大的等比例縮略圖
???*?
@param
?w?int?最大寬度
???*?
@param
?h?int?最大高度
???*?
@throws
?IOException
???
*/
??
public
?
void
?resizeFix(
int
?w,?
int
?h)?
throws
?IOException?
{

????
if
?(width?
/
?height?
>
?w?
/
?h)?
{
??????resizeByWidth(w);
????}
????
else
?
{
??????resizeByHeight(h);
????}
??}
??
/**?*/
/**
???*?設(shè)置目標(biāo)文件名
???*?setDestFile
???*?
@param
?fileName?String?文件名字符串
???
*/
??
public
?
void
?setDestFile(String?fileName)?
throws
?Exception?
{

????
if
?(
!
fileName.endsWith(
"
.jpg
"
))?
{
??????
throw
?
new
?Exception(
"
Dest?File?Must?end?with?\
"
.jpg\
"
.
"
);
????}
????destFile?
=
?fileName;
??}
??
/**?*/
/**
???*?獲取目標(biāo)文件名
???*?getDestFile
???
*/
??
public
?String?getDestFile()?
{
????
return
?destFile;
??}
??
/**?*/
/**
???*?獲取圖片原始寬度
???*?getSrcWidth
???
*/
??
public
?
int
?getSrcWidth()?
{
????
return
?width;
??}
??
/**?*/
/**
???*?獲取圖片原始高度
???*?getSrcHeight
???
*/
??
public
?
int
?getSrcHeight()?
{
????
return
?height;
??}
}
posted on 2006-04-04 17:06
Q系列類、方法、變量…… 閱讀(1583)
評(píng)論(1) 編輯 收藏 所屬分類:
網(wǎng)上工具代碼