『壹』 java如何修改图片大小
截取点代码片断,你自己看着改
修改图片大小用getScaledInstance方法
BufferedImagebimg=null;
Imageimg=null;
intwidth,height;
try{
bimg=ImageIO.read(u);
if(bimg.getWidth()>bimg.getHeight())
{
width=40;
height=bimg.getHeight()*width/bimg.getWidth();
}
else
{
height=40;
width=bimg.getWidth()*height/bimg.getHeight();
}
img=bimg.getScaledInstance(width,height,Image.SCALE_DEFAULT);
pre_image=bimg.getScaledInstance(width*10,height*10,Image.SCALE_DEFAULT);
}catch(IOExceptione){
e.printStackTrace();
}
『贰』 在java Applet里如何实现鼠标滚轮放大缩小图片
创建鼠标滚轮监听事件MouseWheelListener,MouseWheelEvent e,
int num=e.getWheelRotation(); 这个用来得到滚轮转动的方向与单位数,正数表示向下旋转,负数表示向上旋转,绝对值表示转动的单位。
然后你再改变图片的大小和位置,然后 refresh();
建议用JLabel来显示图片,然后在鼠标的滚轮事件中改变JLabel的大小和位置就OK了,具体的自己去实现。
看来得给你个例子啊!关键点1:按比例缩放图片;2:this.repaint();之前写错了不好意思啊
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实例】使用Thumbnailator生成缩略图(缩放、旋转、裁剪、水印)
表哥需要给儿子报名考试,系统要求上传不超过30KB的图片,而现在的手机随手一拍就是几MB的,怎么弄一个才30KB的图片呢?
一个简单的办法是在电脑上把图片缩小,然后截屏小图片,但现在的电脑屏幕分辨率很高,而且截屏大小不好控制;同样分辨率在不同图片格式下,大小也相差很大。试了一下微信截图工具,输出的图片比较大。于是放弃了该办法。
另一个办法是通过其它工具来处理。找了图片在线压缩网站和一款手机软件,发现在图片小于一定大小时压缩无效。如果再继续找其它工具,简直就是折腾且浪费时间,所以也放弃了该办法。
最后,还是自己写个代码把图片按原比例压缩成了29KB,使用Thumbnailator库,两三行代码搞定。
缩略图是应用极其广泛的,像头像、图片消息、商品图片等,都会用到缩略图。
比如,当你有了一个新的微信好友,你就能看到他的头像,一开始这个头像是一个比原图更小的缩略图。而你点击查看原图时,微信客户端才会给你下载原图。因为你并不会对每个人的头像都感兴趣,都会去查看清晰的原图,一个小小的缩略图已经能满足了。这样可以减轻网络传输的负担,加快响应速度。
微信传图片和视频也是同样的道理,先给你传一个比较小的预览,你点击查看原图或视频播放才给你传更大的文件。
缩略图的开源库很多:
(1)Thumbnailator
GitHub: https://github.com/coobird/thumbnailator
不依赖外部库,轻便高效,任何平台适用,支持缩放、旋转、截取,支持水印。
(2)Imgscalr
GitHub: https://github.com/rkalla/imgscalr
全部基于 Java 2D,不依赖外部库,轻便高效,任何平台适用,支持缩放、旋转、截取,不支持水印。
本文主要讲解Thumbnailator的使用,最新版本为0.4.8,maven引入如下:
原图为4:3比例的图片,为4032x3024(图片太大,网站无法上传原图),如下:
当使用指定大小方式进行缩放时,默认是保持原比例的。
展示其中两种结果:
(1)size(200, 300),结果为200X150的图片,比例还是4:3。
(2)forceSize(200, 300),结果为200X300的图片,如原比例不同,会有变形。
按比例进行缩放是指按宽和高的比例同时缩放,看下面代码:
按角度旋转时,角度为正数时,顺时针;角度为负数时,逆时针。代码如下:
压缩并旋转后的结果图片如下所示:
添加水印也是十分方便,我们示例将水印放在右上角,代码如下:
加上水印后的图片如下:
代码如下:
结果如下:
这个功能还是非常有用,可以操作目录下的所有图片,并指定文件名输出,如指定前缀,代码如下:
操作后的生成的结果如下:
Thumbnailator库操作方便,支持缩放、旋转、裁剪、水印等功能,而且没有其它依赖,值得了解学习。
欢迎关注公众号,将持续为你更新...
多读书,多分享;多写作,多整理。
『肆』 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图片压缩生成缩略图和水印的方法如下:
1. 使用Java原生API进行图片压缩: Java原生API提供了对图片进行缩放和压缩的功能。 可以使用javax.imageio包中的工具对图片进行等比缩放并压缩。 当输出图片格式为JPEG时,利用JPEGEncodeParam指定输出图片质量,通常建议的压缩平衡值在0.75或0.8左右,以在保证图片质量的同时减少文件体积。 JPEG格式通常比PNG格式更小,但PNG支持图片透明度,适用于需要透明背景的场景。
2. 使用Thumbnailator生成缩略图和添加水印: Thumbnailator是一个用于Java的缩略图生成库,提供了一套简单易用的API。 使用前需将Thumbnailator作为单独的Jar包引入项目,通常通过在pom.xml文件中添加依赖来完成。 Thumbnailator允许通过简单的API调用控制缩略图的尺寸、格式和位置。 同样地,使用Thumbnailator为图片添加水印也非常便捷,只需按照库提供的指南进行配置。
总结: Java原生API和第三方库如Thumbnailator都能有效满足图片压缩、生成缩略图和添加水印的需求。 在实际应用中,开发者可以根据具体需求选择合适的方法和技术,以实现高效、优化的图片管理。
『陆』 java设置插入图片大小
可以用Image中的getScaledInstance方法得到一个按照指定宽度和高度缩放以后的Image实例,然后再用setImage方法设置ImageIcon所显示的图像
一下示例:
×××××××××××××××××××××××××××××
import javax.swing.*;
import java.awt.*;
public class test extends JFrame
{
private ImageIcon img;
private JLabel showImg;
private final static int WIDTH=147;
private final static int HEIGHT=136;
public test()
{
img=new ImageIcon("1.png");
img.setImage(img.getImage().getScaledInstance(test.WIDTH,test.HEIGHT,Image.SCALE_DEFAULT));
showImg=new JLabel();
showImg.setIcon(img);
this.add(showImg,BorderLayout.CENTER);
this.setBounds(300,200,400,300);
this.pack();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String args[])
{
new test();
}
}
『柒』 怎么用java代码放大或缩小图片不失真。
放大图像不会导致失真,而缩小图像将不可避免的失真。Java中也同样是这样。但java提供了4个缩放的微调选项。image.SCALE_SMOOTH //平滑优先image.SCALE_FAST//速度优先image.SCALE_AREA_AVERAGING //区域均值image.SCALE_REPLICATE //像素复制型缩放image.SCALE_DEFAULT //默认缩放模式调用方法Image new_img=old_img.getScaledInstance(1024, 768, Image.SCALE_SMOOTH);得到一张缩放后的新图。怎么用java代码放大或缩小图片不失真。