网站首页 > 文章中心 > 其它

java缩放图片代码

作者:小编 更新时间:2023-09-15 11:36:17 浏览量:151人看过

怎么用java代码放大或缩小图片不失真.

如何用Java实现图形的放大和缩小

java实现图形的放大和缩小,其实就是在画图时,改变图片的长和宽.以下代码参考一下:

import?java.awt.Graphics;

import?java.awt.MouseInfo;

import?java.awt.Point;

import?java.awt.event.ActionEvent;

import?java.awt.event.ActionListener;

import?java.awt.event.MouseEvent;

import?java.awt.event.MouseListener;

import?java.io.File;

import?javax.swing.ImageIcon;

import?javax.swing.JButton;

import?javax.swing.JFileChooser;

import?javax.swing.JFrame;

import?javax.swing.JPanel;

import?javax.swing.filechooser.FileNameExtensionFilter;

public?class?App?extends?JFrame?implements?MouseListener,?ActionListener?{

int?x?=?0;

int?y?=?0;

File[]?selectedFiles?=?null;

int?fileIndex?=?0;

public?App()?{

setDefaultCloseOperation(EXIT_ON_CLOSE);

setLocationRelativeTo(null);

setResizable(false);

getContentPane().setLayout(null);

JPanel?panel?=?new?ImagePanel();

getContentPane().add(panel);

addMouseListener(this);

JButton?btnBrowse?=?new?JButton("Browse");

btnBrowse.addActionListener(this);

getContentPane().add(btnBrowse);

setVisible(true);

}

public?static?void?main(String[]?args)?{

new?App();

public?void?actionPerformed(ActionEvent?e)?{

JFileChooser?chooser?=?new?JFileChooser();

chooser.setMultiSelectionEnabled(true);

FileNameExtensionFilter?filter?=?new?FileNameExtensionFilter(

"JPG?GIF?Images",?"jpg",?"gif");

//?设置文件类型

chooser.setFileFilter(filter);

//?打开选择器面板

int?returnVal?=?chooser.showOpenDialog(this);

if?(returnVal?==?JFileChooser.APPROVE_OPTION)?{

selectedFiles?=?chooser.getSelectedFiles();

repaint();

public?void?mouseClicked(MouseEvent?e)?{

public?void?mouseEntered(MouseEvent?e)?{

public?void?mouseExited(MouseEvent?e)?{

public?void?mousePressed(MouseEvent?e)?{

Point?point?=?MouseInfo.getPointerInfo().getLocation();

x?=?point.x;

y?=?point.y;

public?void?mouseReleased(MouseEvent?e)?{

int?thisX?=?point.x;

int?thisY?=?point.y;

System.out.println("thisX="?◆?thisX?◆?"?"?◆?"thisY="?◆?thisY);

if?(x?thisX)?{

//?right

if?(selectedFiles?!=?null

fileIndex?selectedFiles.length?-?1)?{

fileIndex◆◆;

}?else?{

//?left

if?(selectedFiles?!=?null?fileIndex?0)?{

fileIndex--;

//?右下

//?左上

class?ImagePanel?extends?JPanel?{

public?void?paint(Graphics?g)?{

super.paint(g);

if?(selectedFiles?!=?null)?{

ImageIcon?icon?=?new?ImageIcon(selectedFiles[fileIndex]

.getPath());

g.drawImage(icon.getImage(),?0,?0,?width,?height,?this);

java 图片缩放代码

直接给你一个类,直接套用就好了

import java.awt.RenderingHints;

import java.awt.geom.AffineTransform;

import java.awt.image.BufferedImage;

import java.awt.image.ColorModel;

import java.awt.image.WritableRaster;

import java.io.File;

import javax.imageio.ImageIO;

public class Resize {

BufferedImage bufImage;

int width;

int height;

public Resize() {

// TODO Auto-generated constructor stub

public Resize(String srcPath,int width,int height) {

this.width = width;

this.height = height;

try{

this.bufImage = ImageIO.read(new File(srcPath));

}catch(Exception e){

e.printStackTrace();

public static BufferedImage rize(BufferedImage srcBufImage,int width,int height){

BufferedImage bufTarget = null;

double sx = (double) width / srcBufImage.getWidth();

double sy = (double) height / srcBufImage.getHeight();

int type = srcBufImage.getType();

if(type == BufferedImage.TYPE_CUSTOM){

ColorModel cm = srcBufImage.getColorModel();

WritableRaster raster = cm.createCompatibleWritableRaster(width,

height);

boolean alphaPremultiplied = cm.isAlphaPremultiplied();

bufTarget = new BufferedImage(cm, raster, alphaPremultiplied, null);

}else

bufTarget = new BufferedImage(width, height, type);

g.setRenderingHint(RenderingHints.KEY_RENDERING,

RenderingHints.VALUE_RENDER_QUALITY);

g.drawRenderedImage(srcBufImage, AffineTransform.getScaleInstance(sx, sy));

g.dispose();

return bufTarget;

以上就是土嘎嘎小编为大家整理的java缩放图片代码相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章