32位java怎么改_java修改24位深度png图片为32位深度

前言

在做图片切割时,发现切除来的图片空白部分变成了黑色背景,发现属性是24位深度

解决方案

1.先上代码

BufferedImage image = readImage(url);

BufferedImage bufferedImage = new BufferedImage(width, height, image.getType());

Graphics2D gr = bufferedImage.createGraphics();

//创建、透明背景

bufferedImage = gr.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);

gr = bufferedImage.createGraphics();

//重绘

gr.drawImage(image.getScaledInstance(width, height, Image.SCALE_DEFAULT), 0, 0, width, height, null);

gr.dispose();

File file = new File(outFile);

ImageIO.write(bufferedImage, "png", file);

2.主要代码(这一步主要是将创建的空白图片重置为透明png图片)

bufferedImage = gr.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);

gr = bufferedImage.createGraphics();

3.其他说明(这一步作保真处理)

image.getScaledInstance(width, height, Image.SCALE_DEFAULT)

4.其他代码

/**

* 图片、读取

*

* @param url

* @return

* @throws Exception

*/

private static BufferedImage readImage(String url) throws Exception {

File file = new File(url);

FileInputStream fis = new FileInputStream(file);

BufferedImage image = ImageIO.read(fis);

return image;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 提供了 javax.imageio.ImageIO 类可以用来读取和写入图片。但是,需要注意的是,JPEG 格式的图片本身就是8深度24深度),因此你需要将其转换为另一种格式,如 PNG 或 BMP,才能将其深度转换为 32 。 以下是将 24 深度的 JPEG 转换为 32 深度PNG 图片的示例代码: ```java import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class JPEGtoPNG { public static void main(String[] args) throws IOException { // 读取 JPEG 图片 BufferedImage image = ImageIO.read(new File("input.jpg")); // 创建一个 32 深度的 BufferedImage BufferedImage newImage = new BufferedImage( image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_ARGB); // 将 JPEG 图片的像素复制到新的 BufferedImage 中 newImage.getGraphics().drawImage(image, 0, 0, null); // 保存为 PNG 图片 ImageIO.write(newImage, "png", new File("output.png")); } } ``` 此代码将读取名为 "input.jpg" 的 JPEG 图片,并将其转换为 32 深度PNG 图片 "output.png"。请注意,我们使用 BufferedImage 类的两个构造函数来创建新的 BufferedImage 和 TYPE_INT_ARGB 常量来指定深度。然后,我们使用 Graphics 类的 drawImage 方法将 JPEG 图片的像素复制到新的 BufferedImage 中。最后,我们使用 ImageIO 类的 write 方法来将新的 BufferedImage 保存为 PNG 图片。 在实际使用中,你需要根据自己的需求对代码进行修改

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值