* @param srcImageFile 源图像文件地址 * @param descImageFile 缩放后的图像地址 * @param width 缩放后的宽度 * @param height 缩放后的高度 * @param isPadding 是否补白 public final static void changeSize (String srcImageFile, String descImageFile, int width, int height, boolean isPadding) { try { // 缩放比例 double ratio = 0.0 ; File file = new File(srcImageFile); BufferedImage bufferedImage = ImageIO.read(file); Image image = bufferedImage.getScaledInstance(width, height, bufferedImage.SCALE_SMOOTH); // 计算缩放比例 if (bufferedImage.getHeight() > bufferedImage.getWidth()) { ratio = ( new Integer(height)).doubleValue() / bufferedImage.getHeight(); } else { ratio = ( new Integer(width)).doubleValue() / bufferedImage.getWidth(); AffineTransformOp op = new AffineTransformOp(AffineTransform.getScaleInstance(ratio, ratio), null ); image = op.filter(bufferedImage, null ); // 是否需要补白 if (isPadding) { BufferedImage tempBufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D graphics2d = tempBufferedImage.createGraphics(); graphics2d.setColor(Color.white); graphics2d.fillRect( 0 , 0 , width, height); if (width == image.getWidth( null )) { graphics2d.drawImage(image, 0 , (height - image.getHeight( null )) / 2 , image.getWidth( null ), image.getHeight( null ), Color.white, null ); } else { graphics2d.drawImage(image, (width - image.getWidth( null )) / 2 , 0 , image.getWidth( null ), image.getHeight( null ), Color.white, null ); graphics2d.dispose(); image = tempBufferedImage; ImageIO.write((BufferedImage) image, "png" , new File(descImageFile)); } catch (IOException e) { e.printStackTrace();

2.合并两张PNG图片

* 功能描述: <br> * 〈利用画布生成新的图片〉 * @param backImage 背景图文件地址 * @param srcImage 前景图文件地址 * @param descImage 生成图文件地址 * @return public static void mergeImage (String backImage, String srcImage, String descImage) { try { int offset = 0 ; BufferedImage backBufferedImage = ImageIO.read( new File(backImage)); BufferedImage srcBufferedImage = ImageIO.read( new File(srcImage)); // 输出图片宽度 int width = backBufferedImage.getWidth() + offset; // 输出图片高度 int height = backBufferedImage.getWidth() + offset; BufferedImage descBufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR); Graphics2D graphics2d = (Graphics2D) descBufferedImage.getGraphics(); graphics2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); // 往画布上添加图片,并设置边距 graphics2d.drawImage(backBufferedImage, null , 0 , 0 ); graphics2d.drawImage(srcBufferedImage, null , 175 , 175 ); graphics2d.dispose(); // 输出新图片 ImageIO.write(descBufferedImage, "png" , new File(descImage)); } catch (Exception e) { e.printStackTrace();

3.测试代码

public static void main(String[] args) throws IOException {
    // 重新调整b.png尺寸 生成d.png
    changeSize("d:\\b.png", "d:\\d.png", 640, 640, false);
    // 合并a.png+d.png->c.png
    mergeImage("d:\\a.png", "d:\\d.png", "d:\\c.png");

4.测试结果

如果需要了解ICO的文件头可以参考我之前发的源码: 实例源码 - 文件提取资.源及ICON文件头 https://bbs.125.la/forum.php?mod=viewthreadtid=14590510 你们有没有被困扰百度搜索ICO图标生成 居然都没有找到 一个可以一个图标包含多个格式的。 网上基本都是用其他图片格式ICO图标,保存下来这个图标就只有一种格式 只能自己写了一个方法来实现了。。。 其他图片格式ICO 有时间在研究一下,到时候在分享大家。问题不大。。 又是要给深夜。希望我的分享能给你有所帮助。 param center 图片是否水平居中, horizontal 等于 false 垂直合并才有效。@param transparent 合并后的图片背景是否透明色。@param gap 图片之间的间距。@param color 图片背景颜色。@return 返回合并之后的图片。// 设置图片背景透明的。// 创建绘制目标图片对象。// 返回合并后的图片对象。// 获取原始图片宽度。// 合并后的图片宽高。// 创建目标图片对象。// 按照顺序绘制图片png图片化为ico图标并保留透明背景方法。 先看效果图,png 化为 ico,非常简单!在线化一下搞定,而且质量有保障! easyicon 在线 ico 官网 选择文件后,再选择好参数,开始换就好了,然后会提示你保存位置。 【原由】这是我在实习时候写的程序,纯JAVA的!将来大家肯定能用到,在这里发出来分享,写的不好还希望能帮忙修改!【功能】批量PNG图片透明合成【注释】为了方便手理解,我会和生活中绘画的逻辑结合说明,高手不要笑话我,嘿嘿!【步骤和原理】1、首先,确定我们要画什么图片,所以先File一下,在把它读取BufferedImage,这样才可以去画!就像我们有几张不同的照片(File),把它们画到一张画纸(... import java.awt.Graphics2D;import java.awt.Transparency;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.util.List;import javax.imageio.ImageIO;public cla... Here's my code:String s = "/Applications/Asphalt6.app";JFileChooser chooser = new JFileChooser();File file = new File(s);Icon icon = chooser.getIcon(file);// show the iconJLabel ficon = new JLabel(s, ... 在JAVA Swing 里,给一个JLable设置一个背景图片很简单,直接用 JLable.setIcon(new ImageIcon(path)); 就可以了,但存在个问题就是设置上的图片图片的原有大小,如果 JLable的大小与图片大小不符的话可能就显示不全.ImageIcon没有重设置图片大小,或者缩放的方法. 解决办法: 可以用Image中的getScaledIn publicclassImgFactory{privateLoggerlog=LoggerFactory.getLogger(ImgFactory.class);privateFile_saveFile;privateBufferedImage_sourceBufferedImage;publicstaticfinalintLETF=1;publicstaticfinalintRIGHT=2;pu... 一、问题:一个程序,组件上设置某个图片作为图标,因为的label(应该说是组件)已经设定了固定大小, 所以再打开一些大图片时,超过组件大小的部分没显示出来,而小图片又没填充完整个组件二、解决这个问题,需要用到两个类:Java.awt.Image类 javax.swing.ImageIcon类1.java.awt.Image是个抽象类,这个过程中用到的参数和函数如下: (1)static int S... ICO converter,一个ICO格式换网站,目前仅支持将PNG、JPG等其他格式的图片换为ICO这一个功能,整个页面调性比较简洁。ICO作为一种图标文件随处可见,在设计的时候偶尔会需要将PNG图片ICO格式。第四步、添加完毕后就可以准备换了,如果还有要换的其他图片仍然可以点击左上角的添加文件,别忘了设置好你想要的换参数,比如下方的尺寸和输出位置。一、格式换工具拥有对PDF文件全面的格式换功能,也支持各种格式的图片换,还可以换CAD文件的格式,和换格式相关的问题丢给它就好啦。 使用java程序,对图片的尺寸及格式进行重设置,需要注意的是,透明背景图片和非透明背景图片的处理是不一样的,详情请看代码package com.ilike.demo;import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Transparency;