當前位置:首頁 » 圖片資訊 » java如何放大圖片
擴展閱讀
美女健身跳河視頻 2023-08-31 22:08:21
西方貴族美女照片真人 2023-08-31 22:08:15

java如何放大圖片

發布時間: 2022-08-16 07:01:47

㈠ 怎麼用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實現圖形的放大和縮小,可以使用以下代碼:

import java.awt.*;import java.awt.event.*;import javax.swing.*;//實現矩形在規定時間間隔里循環放大縮小;

public class Test02 extends JFrame implements Runnable{static int w = 0,h = 0;//w:矩形寬度,h:矩形高度 ;

boolean flag = false;//false:放大,true:縮小public Test02(){this.setSize (500,500);this.setVisible (true);this.setTitle (w+","+h);this.setLocationRelativeTo (this);this.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);}public void paint(Graphics g){int width = getWidth();

//窗口寬度int height = getWidth();//窗口高度g.setColor (Color.WHITE);//設置畫筆顏色g.fillRect (0,0,width,height); //填充窗口int x = (width-w)/2;//x:矩形左上角橫坐標int y = (height-h)/2;//y:矩形左上角縱坐標g.setColor (Color.BLUE);//同上...g.drawRect (x,y,w,h);

//畫矩形,實心矩形為fillRect(....)g.setColor (Color.RED);//同上...g.drawOval (x,y,w,h); //畫橢圓setTitle (w+","+h); //以矩形寬和高來設置窗口標題}public void setSize(){float n = getWidth()/getWidth();if(w==0||h==0)flag = false;

if(w==getWidth()||h==getWidth())flag = true;if(!flag){w+=1;h+=n;}if(flag){w-=1;h-=n;}}public void run(){while(true){try{Thread.sleep (5);//間隔}catch(InterruptedException ie){}setSize();repaint();}}public static void main(String[] args){Test02 t = new Test02();Thread th = new Thread(t);th.start();}}

㈢ JAVA插入圖片並可以實現圖片的縮小放大移動

親,這是需要線程的,你構造一個線程,在run方法裡面就可以控制這張圖片的坐標(移動)和寬高(放大縮小)

㈣ java怎麼實現通過滑鼠滾輪對圖片進行等比例縮放功能

給你個實例吧
public class Anniu extends JFrame implements MouseWheelListener {

private static final long serialVersionUID = 1L;

JLabel jl = null;
ImageIcon image = new ImageIcon("F://12.jpg");
public Anniu() {

}

public void init() {
setLayout(null);

jl = new JLabel(image);
setSize(800, 600);
jl.setBounds(300, 200, 200, 200);
add(jl);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addMouseWheelListener(this);
setVisible(true);
}

@Override
public void mouseWheelMoved(MouseWheelEvent e) {
// TODO Auto-generated method stub
int num = e.getWheelRotation();
int x = (this.getWidth() - jl.getWidth()) / 2;
int y = (this.getHeight() - jl.getHeight()) / 2;
int width=jl.getWidth()+ 2 * num;
int height=jl.getHeight()+ 2 * num;
jl.setIcon(new ImageIcon( image.getImage().getScaledInstance(width, height, Image.SCALE_SMOOTH))); //重點1:按所給的大小來設置圖片,不管圖片有多大,總是全圖顯示,可能導致失真!你可以加一個大小限制,超過圖片大小了則不再放大。
jl.setBounds(x + num, y + num, width, height);
this.repaint(); //刷新屏幕
}

㈤ 我寫的java圖片查看器怎麼讓圖片縮小放大呢

放大像素會失真,如果你要實現這一共能的話可以用JLabel來顯示圖片。有一個方法可以實現圖片的縮放ImageIcon ii = new ImageIcon("img/item.jpg");

Image img = ii.getImage();
img = img.getScaledInstance(100, 100, Image.SCALE_DEFAULT);
ii = new ImageIcon(img);這個例子的getScaledInstance方法可以生成一個新的Image對象,可以縮放成指定的大小。

㈥ 滑鼠經過的地方,java圖片局部放大代碼

沒有代碼,准備一個隱藏的 JInternalFrame,當滑鼠移到一個圖片縮略圖時,我們通過 JAI (Java Advanced Image, Oracle 網站有下載的 jar) 來把圖片縮放成一個 BufferedImage,然後再 myInternalFrame.getMyPreviewPanel().setImageIcon(myBufferedImage); 替換 JInternalFrame 中的 myPreviewPanel 的圖標,再把 JInternalFrame 顯示到前面來,並給它一個滑鼠事件,當滑鼠移出這個窗體或滑鼠單擊時把 JInternalFrame 隱藏回到原來的縮略圖列表中。


下面是我預覽產品圖片時的代碼,類似的方法做成的,先縮放在內存中得到一張 BufferedImage 圖片,再放到 Preview 預覽框中顯示出來。你這個局部放大的話,就是把原來的圖片通過 JAI 剪切出一個方形再來放大,應該在 JAI 中也有這個吧,不過我沒找過,你在它的 API 文檔中找方法列出,應該有的。

㈦ 如何用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 圖像放大

其實,這個演算法老復雜了。

最近像素插值演算法是最簡單的一種插值演算法,當圖片放大時,缺少的像素通過直接使用與之最接近的原有的像素的顏色生成,也就是說照搬旁邊的像素。它是三種內插值方式中質量最差的一種,用該方法修改後的圖像邊緣有鋸齒,但速度較快。

雙線性插值演算法是沿水平和垂直方向對周圍像素取樣,然後建立像素顏色總數的平均顏色值。這種演算法極大地消除了鋸齒現象,在計算速度與質量兩個方面都居於三種方法中間地位。

雙立方插值演算法是在水平、垂直和對角線方向對像素取樣,然後使用總顏色的加權平均值建立新像素,它是三者中運算速度最慢,但效果最佳的一種。