導航:首頁 > 編程語言 > java圖片放大

java圖片放大

發布時間:2025-01-27 01:32:09

java swing中如何改變圖片大小,如下圖

就用自帶的swing都可以把 /** * 改變圖片的大小到寬為size,然後高隨著寬等比例變化 * @param is 上傳的圖片的輸入流 * @param os 改變了圖片的大小後,把圖片的流輸出到目標OutputStream * @param size 新圖片的寬 * @param format 新圖片的格...

⑵ 在java Applet里如何實現滑鼠滾輪放大縮小圖片

創建滑鼠滾輪監聽事件MouseWheelListener,MouseWheelEvent e,
int num=e.getWheelRotation(); 這個用來得到滾輪轉動的方向與單位數,正數表示向下旋轉,負數表示向上旋轉,絕對值表示轉動的單位。
然後你再改變圖片的大小和位置,然後 refresh();
建議用JLabel來顯示圖片,然後在滑鼠的滾輪事件中改變JLabel的大小和位置就OK了,具體的自己去實現。
看來得給你個例子啊!關鍵點1:按比例縮放圖片;2:this.repaint();之前寫錯了不好意思啊
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按比例縮小圖片重繪會丟失數據


Java對圖片進行復縮小和放大,都是針制對像素點操作,可以把像素理解成一個矩陣:
如,一張2*4的圖片,如下,一個字母代表一個像素
A A B B
C C D D

那麼放大,好理解,如放大三倍,以前的一個像素就變成了3*3的一個小像素矩陣
AAA AAA BBB BBB
AAA AAA BBB BBB
AAA AAA BBB BBB
CCC CCC DDD DDD
CCC CCC DDD DDD
CCC CCC DDD DDD
這樣圖片做整數倍操作就不會失針,但是做非整數倍,就存在問題,如放大1.5 * 1.5倍
上面的
A A B B
C C D D
就不好弄了,但是Java會自動採取莫種方式對像素進行處理,【可能】變成下面的矩陣:
A A A B B B
A C A D B D
C C C D D D

這么說理解了嗎? 同理Java縮小圖片時也存在此問題

Java在處理大圖片時,失針效果不明顯,因為會自動計算像素之間個過渡色,做為填充
但是在處理小圖片時,失針效果就非常明顯了
註:其實圖片處理軟體一樣,你可以自己畫個2*4的圖片,採用不同工具測試

親,如果回答滿意,請及時採納,謝謝!

⑷ 如何用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小程序圖片查看器代碼,實現放大、縮小、旋轉功能

我只實現了放大縮小功能,旋轉還有點問題package com.lzw;import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
/*
* @功能:實現圖片的放大縮小與旋轉功能
* @日期:2011.6.29
*/
public class OperationOnPic extends JFrame{

private JPanel imageJpanel;
private JPanel southJpanel;
private JButton rorateButton;
private Mycanvas canvas ;
private int imgWidth, imgHeight;
private JSlider jSlide; //滑動塊組建
// private JScrollPane jScrollPane ;
Image img;
private static int num=0;
private static int newWidth=0;
private static int newHeigth=0;
public static boolean isroate=false;
public OperationOnPic(){
setTitle("圖片操作");
//設置窗體大小
setSize(800, 600);
//設置窗體顯示在中央位置
setLocationRelativeTo(null);
//URL imgUrl = OperationOnPic.class.getResource("2.jpg"); //獲得圖片路徑
//img = Toolkit.getDefaultToolkit().getImage(imgUrl);// 獲取圖片資源
ImageIcon image=new ImageIcon(OperationOnPic.class.getResource("2.jpg"));
img=image.getImage();
canvas=new Mycanvas();
//調用布局方法
init();
//設置窗體可見
setVisible(true);
}
public void init(){
setDefaultCloseOperation(this.EXIT_ON_CLOSE); //設置窗體可關閉
imageJpanel=new JPanel();
southJpanel=new JPanel();
imageJpanel.setLayout(new BorderLayout());
imageJpanel.add(canvas,BorderLayout.CENTER);
imageJpanel.add(getJSlider(),BorderLayout.SOUTH);
rorateButton=new JButton("圖片旋轉");
rorateButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
num+=5;
isroate=true;
canvas.repaint();
isroate=false;
}

});
southJpanel.add(rorateButton); //將按鈕添加到面板上
this.getContentPane().add(imageJpanel,BorderLayout.CENTER);
this.getContentPane().add(southJpanel,BorderLayout.SOUTH);

}
public JSlider getJSlider(){
if(jSlide==null){
jSlide=new JSlider(); //實例化一個滑動塊對象
jSlide.setMaximum(500); //設置滑動塊的最大取值
jSlide.setMinimum(1); //設置滑動塊的最小取值
jSlide.setValue(50); //設置滑動塊當前值
jSlide.addChangeListener(new ChangeListener(){ public void stateChanged(ChangeEvent e) {
// TODO Auto-generated method stub
canvas.repaint(); //重新繪制圖像

}

});
}
return jSlide;
}
public static void main(String[] args) {
new OperationOnPic();
}
class Mycanvas extends Canvas{

public void paint(final Graphics g){ //重寫paint
if(isroate==false){
imgWidth=img.getWidth(this);
imgHeight=img.getHeight(this);
float value=jSlide.getValue(); //取得滑動塊的值
newWidth=(int)(imgWidth*value/100);
newHeigth=(int)(imgHeight*value/100);

g.drawImage(img,0,0,newWidth,newHeigth,this);
g.dispose();
}else{
num+=5;
Graphics2D g2=(Graphics2D)g;
g2.rotate(Math.toRadians(num));
g2.drawImage(img,0,0,400,400,this);
g.dispose();
}
}
}

⑹ 怎麼用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圖片放大相關的資料

熱點內容
ipad如何關閉app中的app 瀏覽:704
word全形半形 瀏覽:912
二手車網站怎麼沒有近一兩年的車 瀏覽:900
多益網路校招哪些崗位 瀏覽:65
女生微信頭像黑色 瀏覽:166
慢走絲g代碼 瀏覽:30
編程四方括弧怎麼打出來 瀏覽:464
如何改網路讓它變慢 瀏覽:12
應用多開助手安卓版 瀏覽:38
如何把思維傳送網路 瀏覽:339
vb數據怎麼合並 瀏覽:700
掃碼購物app哪個好 瀏覽:39
win7桌面整理工具 瀏覽:489
ps參考線視頻教程 瀏覽:608
如何調用指針中存儲的數據 瀏覽:807
壓縮文件比原文小多少 瀏覽:994
蘋果mini2怎麼讀txt文件 瀏覽:498
java單例模式的應用 瀏覽:839
無源蜂鳴器代碼 瀏覽:228
買qq號技巧 瀏覽:505

友情鏈接