当前位置:首页 » 图片资讯 » 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 图像放大

其实,这个算法老复杂了。

最近像素插值算法是最简单的一种插值算法,当图片放大时,缺少的像素通过直接使用与之最接近的原有的像素的颜色生成,也就是说照搬旁边的像素。它是三种内插值方式中质量最差的一种,用该方法修改后的图像边缘有锯齿,但速度较快。

双线性插值算法是沿水平和垂直方向对周围像素取样,然后建立像素颜色总数的平均颜色值。这种算法极大地消除了锯齿现象,在计算速度与质量两个方面都居于三种方法中间地位。

双立方插值算法是在水平、垂直和对角线方向对像素取样,然后使用总颜色的加权平均值建立新像素,它是三者中运算速度最慢,但效果最佳的一种。