*
@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 {
changeSize("d:\\b.png", "d:\\d.png", 640, 640, false);
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;