java图片等比缩小图片(java图片resize)

华为云服务器特价优惠火热进行中!

2核2G2兆仅需 38 元;4核4G3兆仅需 79 元。购买时间越长越优惠!更多配置及优惠价格请咨询客服。

合作流程:
1、点击链接注册/关联华为云账号:点击跳转
2、添加客服微信号:cloud7591,确定产品方案、价格方案、服务支持方案等;
3、客服协助购买,并拉微信技术服务群,享受一对一免费技术支持服务;
技术专家在金蝶、华为、腾讯原厂有多年工作经验,并已从事云计算服务8年,可对域名、备案、网站搭建、系统部署、AI人工智能、云资源规划等上云常见问题提供更专业靠谱的服务,对相应产品提供更优惠的报价和方案,欢迎咨询。

今天给各位分享java图片等比缩小图片的知识,其中也会对java图片resize进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

微信号:cloud7591
如需了解更多,欢迎添加客服微信咨询。
复制微信号

本文目录一览:

java怎样等比缩放截图

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 怎么把gif图按比例缩放

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.awt.geom.*;

import java.util.*;

final class cat extends JFrame {

    final static private Dimension SIZE = new Dimension(800, 600);

    public String getTitle() {return "cat";}

    public Dimension getPreferredSize() {return SIZE;}

    public Dimension getMinimumSize() {return SIZE;}

    public Dimension getMaximumSize() {return SIZE;}

    public Dimension getSize() {return SIZE;}

    private Canvas canvas;

    private Brush brush;

    cat() throws HeadlessException {

        init();

        attachListeners();

        doLay();

        setVisible(true);

    }

    private void init() {

        brush = new CatBrush();

        canvas = new Canvas(brush);

    }

    private void attachListeners() {

        addWindowListener(new WindowAdapter() {

            public void windowClosing(WindowEvent e) {

                System.exit(1);

            }

        });

    }

    private void doLay() {

        Container container = getContentPane();

        container.add(canvas, BorderLayout.CENTER);

        pack();

    }

    public static void main(String... args) {

        System.setProperty("swing.defaultlaf", "com.sun.java.swing.plaf.windows.WindowsLookAndFeel");

        SwingUtilities.invokeLater(cat::new);

    }

    private interface Brush extends Observer {

        /**

         * do paint action

         * @param g the graphics context in you application

         */

        void paint(Graphics g);

        /**

         * The component that this brush hold

         * @return component instance

         */

        Component getOwner();

        void setOwner(Component owner);

    }

    private static final class CatBrush implements Brush {

        private Component owner;

        private Image img;

        private AffineTransform affineTransform = AffineTransform.getScaleInstance(.4d,.4d);

        public CatBrush() {

            img = Toolkit.getDefaultToolkit().getImage("G:\\cat.jpg");

        }

        public Component getOwner() {

            return owner;

        }

        public void setOwner(Component owner) {

            this.owner = owner;

        }

        public void paint(Graphics g) {

            Graphics2D g2 = (Graphics2D)g.create();

            g2.drawImage(img,affineTransform,getOwner());

            g2.dispose();

        }

        public void update(Observable o, Object arg) {

            if (owner != null) owner.repaint();

        }

    }

    /**

     * you canvas

     */

    private class Canvas extends JComponent {

        private Brush brush;

        private Canvas(Brush brush) {

            super();

            this.brush = brush;

            brush.setOwner(this);

        }

        protected void paintComponent(Graphics g) {

            super.paintComponent(g);

            if (brush == null) return;

            brush.paint(g);

        }

    }

}

java实现 图片等比缩放的原理

这在算缩放率啊.是用的这个吧?

getWidth(ImageObserver) - Method in class java.awt.Image

可能ImageObserver没有所以用Null

0.1好像是怕rate是0出问题,或是java的float运算要求的.

java的数值运算好像不是强项.

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是怎么实现等比例缩小图片而不失真的啊?

按照等比例的长宽进行缩放就可以了呀,就好像你打开一个图片,一般都有缩放功能,原理是一样的,等比例的缩放,关键像素还是存在的。

java如何实现把一个大图片压缩到指定大小的图片且长宽比不变

也就是图片压缩,可以不修改任何大小的压缩(速度快),也可等比例修改大小压缩(较慢)

下面这是一段等比例缩小图片的方法。

public String compressPic(String inputDir, String outputDir,

String inputFileName, String outputFileName, int width,

int height, boolean gp,String hzm) {

try {

if (!image.exists()) {

return "";

}

Image img = ImageIO.read(image);

// 判断图片格式是否正确

if (img.getWidth(null) == -1) {

return "no";

} else {

int newWidth; int newHeight;

// 判断是否是等比缩放

if (gp == true) {

// 为等比缩放计算输出的图片宽度及高度

double rate1 = ((double) img.getWidth(null)) / (double) width ;

double rate2 = ((double) img.getHeight(null)) / (double) height ;

// 根据缩放比率大的进行缩放控制

double rate = rate1 rate2 ? rate1 : rate2;

newWidth = (int) (((double) img.getWidth(null)) / rate);

newHeight = (int) (((double) img.getHeight(null)) / rate);

} else {

newWidth = img.getWidth(null); // 输出的图片宽度

newHeight = img.getHeight(null); // 输出的图片高度

}

BufferedImage tag = new BufferedImage((int) newWidth, (int) newHeight, BufferedImage.TYPE_INT_RGB);

/*

* Image.SCALE_SMOOTH 的缩略算法 生成缩略图片的平滑度的

* 优先级比速度高 生成的图片质量比较好 但速度慢

*/

Image im = img.getScaledInstance(newWidth, newHeight, Image.SCALE_SMOOTH);

tag.getGraphics().drawImage(im, 0, 0, null);

FileOutputStream out = new FileOutputStream(outputDir + outputFileName);

//JPEGImageEncoder可适用于其他图片类型的转换

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

encoder.encode(tag);

out.close();

}

} catch (IOException ex) {

ex.printStackTrace();

}

return "ok";

}

关于java图片等比缩小图片和java图片resize的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

发布于 2023-04-05 17:04:38
收藏
分享
海报
28
目录

    忘记密码?

    图形验证码

    复制成功
    微信号: cloud7591
    如需了解更多,欢迎添加客服微信咨询。
    我知道了