java高保真高性能图片缩放编码

package com.zte.csp.oam.kvm;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.Toolkit;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;

 public class ImagePane extends JPanel {

    static ImagePane imagep;
    BufferedImage bufferedImg;
    Image image;
    static double scaleX = 1.1, scaleY = 1.0;

    public ImagePane() {
        try {
            image = ImageIO.read(new File("C:\\mouse1.png"));
            bufferedImg = new BufferedImage(128, 128, BufferedImage.TYPE_INT_ARGB);
            bufferedImg.getGraphics().drawImage(image, 0, 0, 128, 128, null);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

    private void viewviewer(Graphics g, BufferedImage bufferedImg) {


        super.paintComponent(g);
        Graphics2D localGraphics2D = (Graphics2D) g;
        localGraphics2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
        localGraphics2D.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_SPEED);
        localGraphics2D.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_DISABLE);
        localGraphics2D.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_OFF);
        localGraphics2D.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED);
        localGraphics2D.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
        localGraphics2D.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_DEFAULT);
        localGraphics2D.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
        AffineTransform localAffineTransform = null;
        Dimension localDimension1 = Toolkit.getDefaultToolkit().getScreenSize();


        //System.out.println("scaleX:"+scaleX+"   scaleY:"+scaleY);
        localAffineTransform = AffineTransform.getScaleInstance(scaleX, scaleY);
        localGraphics2D.drawImage(bufferedImg, localAffineTransform, this);
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);

        viewviewer(g, bufferedImg);

        //g.drawImage(image, 0, 0, this);
    }

    private static void sliderVgaScaleStateChanged(javax.swing.event.ChangeEvent evt) {
        // TODO add your handling code here:

        scaleX = ((javax.swing.JSlider) evt.getSource()).getValue() / 100.0;
        scaleY = ((javax.swing.JSlider) evt.getSource()).getValue() / 100.0;

        imagep.repaint();

    }

    public static void main(String[] args) {
        JFrame frame = new JFrame();

        javax.swing.JSlider sliderVgaScale = new javax.swing.JSlider();
        sliderVgaScale.setMaximum(200);
        sliderVgaScale.setValue(100);
        sliderVgaScale.setMaximumSize(new java.awt.Dimension(200, 25));
        sliderVgaScale.addChangeListener(new javax.swing.event.ChangeListener() {
            public void stateChanged(javax.swing.event.ChangeEvent evt) {
                  sliderVgaScaleStateChanged(evt);
            }
        });

        frame.getContentPane().add(sliderVgaScale, BorderLayout.NORTH);
        imagep = new ImagePane();
        frame.getContentPane().add(imagep);
        frame.setSize(800, 600);
        frame.setVisible(true);
    }
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值