java程序中如何设置图片大小?

java程序中如何设置图片大小?,第1张

用Image中的getScaledInstance方法得到一个按照指定宽度和高度缩放以后的Image实例,然后再用setImage方法设置ImageIcon所显示的图像\x0d\x0a一下示例:\x0d\x0aimportjavax.swing.*\x0d\x0aimportjava.awt.*\x0d\x0a\x0d\x0apublicclasstestextendsJFrame\x0d\x0a{\x0d\x0aprivateImageIconimg\x0d\x0aprivateJLabelshowImg\x0d\x0a\x0d\x0aprivatefinalstaticintWIDTH=147\x0d\x0aprivatefinalstaticintHEIGHT=136\x0d\x0a\x0d\x0apublictest()\x0d\x0a{\x0d\x0aimg=newImageIcon("1.png")\x0d\x0aimg.setImage(img.getImage().getScaledInstance(test.WIDTH,test.HEIGHT,Image.SCALE_DEFAULT))\x0d\x0a\x0d\x0ashowImg=newJLabel()\x0d\x0ashowImg.setIcon(img)\x0d\x0a\x0d\x0athis.add(showImg,BorderLayout.CENTER)\x0d\x0athis.setBounds(300,200,400,300)\x0d\x0athis.pack()\x0d\x0athis.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)\x0d\x0athis.setVisible(true)\x0d\x0a}\x0d\x0a\x0d\x0apublicstaticvoidmain(Stringargs[])\x0d\x0a{\x0d\x0anewtest()\x0d\x0a}\x0d\x0a}

Image srcImg = ImageIO.read(new FileInputStream(fnSrc) )//取源图

int width = 600//假设要缩小到600点像素

int height = srcImg.getHeight(null)*600/srcImg.getWidth(null)//按比例,将高度缩减

System.out.println("Width: "+srcImg.getWidth(null))// 这几行是调试用

System.out.println("Height: "+srcImg.getHeight(null))

System.out.println("Width2: "+width)

System.out.println("Height2: "+height)

Image smallImg =srcImg.getScaledInstance(width, height, Image.SCALE_SMOOTH)//缩小

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

int width = 200

int height = 200

public App() {

setDefaultCloseOperation(EXIT_ON_CLOSE)

setLocationRelativeTo(null)

setSize(400, 300)

setResizable(false)

getContentPane().setLayout(null)

JPanel panel = new ImagePanel()

panel.setBounds(12, 40, 370, 218)

getContentPane().add(panel)

addMouseListener(this)

JButton btnBrowse = new JButton("Browse")

btnBrowse.addActionListener(this)

btnBrowse.setBounds(12, 9, 91, 21)

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) {

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

int thisX = point.x

int thisY = 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()

}

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)

}

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8124736.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存