導航:首頁 > 編程語言 > java縮小圖片

java縮小圖片

發布時間:2025-03-08 08:00:16

① 怎麼用java代碼放大或縮小圖片不失真。

放大圖像不會導致失真,而縮小圖像將不可避免的失真。Java中也同樣是這樣。但java提供了4個縮放的微調選項。image.SCALE_SMOOTH //平滑優先image.SCALE_FAST//速度優先image.SCALE_AREA_AVERAGING //區域均值image.SCALE_REPLICATE //像素復制型縮放image.SCALE_DEFAULT //默認縮放模式調用方法Image new_img=old_img.getScaledInstance(1024, 768, Image.SCALE_SMOOTH);得到一張縮放後的新圖。怎麼用java代碼放大或縮小圖片不失真。

② 如何用Java實現圖形的放大和縮小

java實現圖形的放大和縮小,其實就是在畫圖時,改變圖片的長和寬。以下代碼參考一下:


importjava.awt.Graphics;
importjava.awt.MouseInfo;
importjava.awt.Point;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.MouseEvent;
importjava.awt.event.MouseListener;
importjava.io.File;

importjavax.swing.ImageIcon;
importjavax.swing.JButton;
importjavax.swing.JFileChooser;
importjavax.swing.JFrame;
importjavax.swing.JPanel;
importjavax.swing.filechooser.FileNameExtensionFilter;

,ActionListener{

intx=0;
inty=0;
File[]selectedFiles=null;
intfileIndex=0;
intwidth=200;
intheight=200;

publicApp(){

setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setSize(400,300);
setResizable(false);
getContentPane().setLayout(null);

JPanelpanel=newImagePanel();
panel.setBounds(12,40,370,218);
getContentPane().add(panel);

addMouseListener(this);
JButtonbtnBrowse=newJButton("Browse");
btnBrowse.addActionListener(this);
btnBrowse.setBounds(12,9,91,21);
getContentPane().add(btnBrowse);
setVisible(true);
}

publicstaticvoidmain(String[]args){
newApp();
}

publicvoidactionPerformed(ActionEvente){
JFileChooserchooser=newJFileChooser();
chooser.setMultiSelectionEnabled(true);
FileNameExtensionFilterfilter=newFileNameExtensionFilter(
"JPG&GIFImages","jpg","gif");
//設置文件類型
chooser.setFileFilter(filter);
//打開選擇器面板
intreturnVal=chooser.showOpenDialog(this);
if(returnVal==JFileChooser.APPROVE_OPTION){
selectedFiles=chooser.getSelectedFiles();
repaint();
}
}

publicvoidmouseClicked(MouseEvente){

}

publicvoidmouseEntered(MouseEvente){

}

publicvoidmouseExited(MouseEvente){

}

publicvoidmousePressed(MouseEvente){
Pointpoint=MouseInfo.getPointerInfo().getLocation();
x=point.x;
y=point.y;
}

publicvoidmouseReleased(MouseEvente){
Pointpoint=MouseInfo.getPointerInfo().getLocation();
intthisX=point.x;
intthisY=point.y;
System.out.println("thisX="+thisX+""+"thisY="+thisY);
if((y-thisY<20&&y-thisY>0)
||(y-thisY<0&&y-thisY>-20)){
//Y在20范圍內移動認為是水平移動
if(x<thisX){
//right
if(selectedFiles!=null
&&fileIndex<selectedFiles.length-1){
fileIndex++;
}
}else{
//left
if(selectedFiles!=null&&fileIndex>0){
fileIndex--;
}
}
}else{
if(x<thisX){
//右下
width+=20;
height+=20;
}else{
//左上
width-=20;
height-=20;
}
}

repaint();
}

classImagePanelextendsJPanel{

publicvoidpaint(Graphicsg){
super.paint(g);

if(selectedFiles!=null){
ImageIconicon=newImageIcon(selectedFiles[fileIndex]
.getPath());
g.drawImage(icon.getImage(),0,0,width,height,this);
}
}
}
}

③ java中怎麼設置大小圖片

具體步驟如下所示:

1、打開電腦,進入軟體中,編寫設置大小的代碼,代碼如下所示。

④ java圖片壓縮不失真的方法-java如何實現把一個大圖片壓縮到指定大小的圖片且長寬比不變

java是怎麼實現等比例縮小圖片而不失真的啊?

按照等比例的長寬進行縮放就可以了呀,就好像你打開一個圖片,一般都有縮放功能,原理是一樣的,等比例的縮放,關鍵像素還是存在的。

java如何實現把一個大圖片壓縮到指定大小的圖片且長寬比不變

也就是圖片壓縮,可以不修改任何大小的壓縮(速度快),也可等比例修改大小壓縮(較慢)

下面這是一段等比例縮小圖片的方法。

publicStringcompressPic(StringinputDir,StringoutputDir,

StringinputFileName,StringoutputFileName,intwidth,

intheight,booleangp,Stringhzm){

try{

if(!()){

return"";

}

Imageimg=(image);

//判斷圖片格式是否正確

if((null)==-1){

return"no";

}else{

intnewWidth;intnewHeight;

//判斷是否是等比縮放

if(gp==true){

//為等比縮放計算輸出的圖片寬度及高度

doublerate1=((double)(null))/(double)width;

doublerate2=((double)(null))/(double)height;

//根據縮放比率大的進行縮放控制

doublerate=rate1>rate2?rate1:rate2;

newWidth=(int)(((double)(null))/rate);

newHeight=(int)(((double)(null))/rate);

}else{

newWidth=(null);//輸出的圖片寬度

newHeight=(null);//輸出的圖片高度

}

BufferedImagetag=newBufferedImage((int)newWidth,(int)newHeight,_INT_RGB);

/*

*_SMOOTH的縮略演算法生成縮略圖片的平滑度的

*優先順序比速度高生成的圖片質量比較好但速度慢

*/

Imageim=(newWidth,newHeight,_SMOOTH);

().drawImage(im,0,0,null);

FileOutputStreamout=newFileOutputStream(outputDir+outputFileName);

//JPEGImageEncoder可適用於其他圖片類型的轉換

JPEGImageEncoderencoder=(out);

(tag);

();

}

}catch(IOExceptionex){

();

}

return"ok";

}

求助java壓縮圖片存儲大小的方法

可以使用Draw這個類,通過改變像素來改變存儲大小,實例如下:

public_tatic_oolean_ompressPic(String_rcFilePath,_tring_escFilePath)_hrows_OException_

____File_ile=_ull;

____BufferedImage_rc=_ull;

____FileOutputStream_ut=_ull;

____ImageWriter_mgWrier;

____ImageWriteParam_mgWriteParams;

____//_付ㄐ賜計姆絞轎_jpg

____imgWrier=("jpg").next();

____imgWriteParams=_ew(

________null);

____//_褂醚顧,必須指定壓縮方式為MODE_EXPLICIT

____(_EXPLICIT);

____//_飫鎦付ㄑ顧醯某潭,參數qality是取值0~1范圍內,

____((float)1);

____(_DISABLED);

____ColorModel_olorModel=(new_ile(srcFilePath)).getColorModel();//();

____//_付ㄑ顧跏筆褂玫納誓J

//____(new(

//________colorModel,(16,16)));

____(new(

________colorModel,(16,16)));

____try_

______if(isBlank(srcFilePath))_

________return_alse;

______}_lse_

________file=_ew_ile(srcFilePath);(());

________src=(file);

________out=_ew_ileOutputStream(descFilePath);

________();

________//_匭胂戎付_out值,才能調用write方法,_mageOutputStream可以通過任何

________//_utputStream構造

________((out));

________//_饔_rite方法,就可以向輸入流寫圖片

________(null,_ew_IOImage(src,_ull,_ull),

____________imgWriteParams);

________();

________();

______}

____}_atch(Exception_)_

______e.printStackTrace();

______return_alse;

____}

____return_rue;

__}

public_tatic_oolean_sBlank(String_tring)_

____if(string==_ull_|()==0_|().equals(""))_

______return_rue;

____}

____return_alse;

__}

⑤ java上傳圖片 生成縮略圖,如果上傳的圖片尺寸比較小就壓縮處理

//將圖按比例縮小。
public static BufferedImage resize(BufferedImage source, int targetW, int targetH) {
// targetW,targetH分別表示目標長和寬
int type = source.getType();
BufferedImage target = null;
double sx = (double) targetW / source.getWidth();
double sy = (double) targetH / source.getHeight();
//這里想實現在targetW,targetH范圍內實現等比縮放。如果不需要等比縮放
//則將下面的if else語句注釋即可
if(sx>sy)
{
sx = sy;
targetW = (int)(sx * source.getWidth());
}else{
sy = sx;
targetH = (int)(sy * source.getHeight());
}
if (type == BufferedImage.TYPE_CUSTOM) { //handmade
ColorModel cm = source.getColorModel();
WritableRaster raster = cm.(targetW, targetH);
boolean alphaPremultiplied = cm.isAlphaPremultiplied();
target = new BufferedImage(cm, raster, alphaPremultiplied, null);
} else
target = new BufferedImage(targetW, targetH, type);
Graphics2D g = target.createGraphics();
//smoother than exlax:
g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY );
g.drawRenderedImage(source, AffineTransform.getScaleInstance(sx, sy));
g.dispose();
return target;
}

public static void saveImageAsJpg (String fromFileStr,String saveToFileStr,int width,int hight)
throws Exception {
BufferedImage srcImage;
// String ex = fromFileStr.substring(fromFileStr.indexOf("."),fromFileStr.length());
String imgType = "JPEG";
if (fromFileStr.toLowerCase().endsWith(".png")) {
imgType = "PNG";
}
// System.out.println(ex);
File saveFile=new File(saveToFileStr);
File fromFile=new File(fromFileStr);
srcImage = ImageIO.read(fromFile);
if(width > 0 || hight > 0)
{
srcImage = resize(srcImage, width, hight);
}
ImageIO.write(srcImage, imgType, saveFile);

}

public static void main (String argv[]) {
try{
//參數1(from),參數2(to),參數3(寬),參數4(高)
saveImageAsJpg("C:\\Documents and Settings\\xugang\\桌面\\tmr-06.jpg",
"C:\\Documents and Settings\\xugang\\桌面\\2.jpg",
120,120);
} catch(Exception e){
e.printStackTrace();
}

}

閱讀全文

與java縮小圖片相關的資料

熱點內容
minecraft伺服器怎麼布置 瀏覽:306
怎麼把安卓的東西轉到已激活蘋果 瀏覽:852
停止服務doss命令 瀏覽:877
u盤占內存但該文件夾為空 瀏覽:611
伺服器怎麼更換重生點 瀏覽:34
收費api調用平台源碼 瀏覽:646
安卓怎麼自檢病毒 瀏覽:560
布卡雲伺服器 瀏覽:770
程序員是怎麼做系統的 瀏覽:742
燕窩溯源碼最大加工廠 瀏覽:936
黑馬程序員第28集 瀏覽:485
lcd單片機驅動 瀏覽:647
通達信主力拉升出貨指標公式源碼 瀏覽:639
廉潔pdf 瀏覽:18
批量用修改多個文件夾及子目錄 瀏覽:321
王者每個伺服器爆滿怎麼辦 瀏覽:951
安卓手機如何清除所有的數據 瀏覽:983
激光打標機加密狗驅動無法啟動 瀏覽:912
矽谷程序員題庫 瀏覽:564
安卓系統怎麼開車模式 瀏覽:944