java图片等比缩小图片(java图片resize)
华为云服务器特价优惠火热进行中! 2核2G2兆仅需 38 元;4核4G3兆仅需 79 元。购买时间越长越优惠!更多配置及优惠价格请咨询客服。
合作流程: |
今天给各位分享java图片等比缩小图片的知识,其中也会对java图片resize进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
微信号:cloud7591如需了解更多,欢迎添加客服微信咨询。
复制微信号
本文目录一览:
- 1、java怎样等比缩放截图
- 2、java 怎么把gif图按比例缩放
- 3、java实现 图片等比缩放的原理
- 4、java怎么实现通过鼠标滚轮对图片进行等比例缩放功能?
- 5、java是怎么实现等比例缩小图片而不失真的啊?
- 6、java如何实现把一个大图片压缩到指定大小的图片且长宽比不变
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的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
