java swing中如何改变图片大小,如下图

java swing中如何改变图片大小,如下图,第1张

就用自带的swing都可以把

/**

*

改变图片的大小到宽为size,然后高随着宽等比例变化

*

@param

is

上传的图片的输入流

*

@param

os

改变了图片的大小后,把图片的流输出到目标OutputStream

*

@param

size

新图片的宽

*

@param

format

新图片的格...

在java swing中需要为容器添加图片,或者背景图片

提供两种简单的解决方案,一种利用JPanel,另一种利用JLabel

1.JPanel(源代码)

package oo

import java.awt.Graphics

import java.awt.Image

import java.io.File

import javax.swing.ImageIcon

import javax.swing.JFrame

import javax.swing.JPanel

public class Drawing {

JFrame jframe = new JFrame()

public static JPanel GImage = null

public Drawing() {

initFrame()

}

// 初始化窗口

public void initFrame() {

// 利用JPanel添加背景图片

GImage = new JPanel() {

protected void paintComponent(Graphics g) {

ImageIcon icon = new ImageIcon("image\\benbenla.jpg")

Image img = icon.getImage()

g.drawImage(img, 0, 0, icon.getIconWidth(),

icon.getIconHeight(), icon.getImageObserver())

jframe.setSize(icon.getIconWidth(), icon.getIconHeight())

}

}

jframe.setTitle("测试背景图片")

jframe.add(GImage)

jframe.pack()

jframe.setVisible(true)

jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

}

public static void main(String[] args) {

new Drawing()

}

}

2.JLabel源代码

package swing.draw

import java.awt.Image

import javax.swing.ImageIcon

import javax.swing.JFrame

import javax.swing.JLabel

public class Drawing2 {

JLabel jlpic = new JLabel()

JFrame jframe = new JFrame()

public Drawing2() {

init1Frame()

}

public void init1Frame() {

ImageIcon icon = new ImageIcon("image\\benbenla.jpg")

icon.setImage(icon.getImage().getScaledInstance(icon.getIconWidth(),

icon.getIconHeight(), Image.SCALE_DEFAULT))

System.out.println(icon.getIconHeight() + "" + icon.getIconWidth())

jlpic.setBounds(0, 0, 1366, 768)

jlpic.setHorizontalAlignment(0)

jlpic.setIcon(icon)

jframe.setSize(1366, 768)

jframe.add(jlpic)

jframe.pack()

jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

jframe.setVisible(true)

}

public static void main(String args[]) {

new Drawing2()

}

}

简单来说就是重写paint方法,然后调用画笔的drawImage这个方法。

如:

对一个JPanel加入背景图片“bg01.png”,那么就重写paint这个方法如下

在类里

/**

* 背景图片

*/

Image backgroundImage = null

//这就是重写paint方法

public void paint(Graphics g)

{

loadRecources()

if(backgroundImage != null)

{

g.drawImage(backgroundImage, 0, 0, this)

}

}

public void loadRecources()

{

//载入背景图片

if(backgroundImage == null)

{

try

{

backgroundImage = ImageIO.read(new File("resources/Images/bg01.png"))

} catch (IOException e)

{

System.out.println("缺少背景图片")

JOptionPane.showMessageDialog(this, "找不到背景图片!", "文件缺失", JOptionPane.ERROR_MESSAGE)

}

}

}

这里只是写的一个示例代码


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

原文地址: http://outofmemory.cn/bake/11720998.html

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

发表评论

登录后才能评论

评论列表(0条)

保存