1. 生成png图片

int width = 400;

int height = 300;

// 创建BufferedImage对象

BufferedImage image = new BufferedImage(width, height,     BufferedImage.TYPE_INT_RGB);

// 获取Graphics2D

Graphics2D g2d = image.createGraphics();

// 画图

g2d.setColor(new Color(255,0,0));

g2d.setStroke(new BasicStroke(1));

g2d.draw

//释放对象

g2d.dispose();

// 保存文件

ImageIO.write(image, "png", new File("c:/test.png"));

int width = 400;

int height = 300;

// 创建BufferedImage对象

BufferedImage image = new BufferedImage(width, height,     BufferedImage.TYPE_INT_RGB);

// 获取Graphics2D

Graphics2D g2d = image.createGraphics();

// 画图

g2d.setColor(new Color(255,0,0));

g2d.setStroke(new BasicStroke(1));

g2d.draw

//释放对象

g2d.dispose();

// 保存文件

ImageIO.write(image, "png", new File("c:/test.png"));

这只是绘制图形的代码,其背景是黑色的,如何才能背景透明呢?继续搜索,没有得到结果,不过搜出以下代码,它只是把自己绘制的图形设置为透明或半透明,背景并不透明,如下:

2. 绘制半透明图形

int width = 400;

int height = 300;

// 创建BufferedImage对象

BufferedImage image = new BufferedImage(width, height,     BufferedImage.TYPE_INT_RGB);

// 获取Graphics2D

Graphics2D g2d = image.createGraphics();

// 设置透明度

g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 1.0f)); // 1.0f为透明度 ,值从0-1.0,依次变得不透明

// 画图

g2d.setColor(new Color(255,0,0));

g2d.setStroke(new BasicStroke(1));

g2d.draw

//释放对象

//透明度设置 结束

g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));

g2d.dispose();

// 保存文件

ImageIO.write(image, "png", new File("c:/test.png"));

这样绘制的图形应该说是前景透明的,背景依然是黑色,:(

查看了BufferedImage 和Graphics2D 所有方法和属性,终于找到了解决方案,只不过是增加两行代码而已,如下:

int width = 400;

int height = 300;

// 创建BufferedImage对象

BufferedImage image = new BufferedImage(width, height,     BufferedImage.TYPE_INT_RGB);

// 获取Graphics2D

Graphics2D g2d = image.createGraphics();

// ---------- 增加下面的代码使得背景透明 -----------------

image = g2d.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);

g2d.dispose();

g2d = image.createGraphics();

// ---------- 背景透明代码结束 -----------------

// 画图

g2d.setColor(new Color(255,0,0));

g2d.setStroke(new BasicStroke(1));

g2d.draw

//释放对象

g2d.dispose();

// 保存文件

ImageIO.write(image, "png", new File("c:/test.png"));

================================================

白背景变透明

package com.goldgrid.socket.client;

import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;

import org.apache.log4j.Logger;

public class Alpha {

protected static Logger logger = Logger.getLogger(ClientSocket.class);

public byte[] transferAlpha(Image image) {

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

try {
    ImageIcon imageIcon = new ImageIcon(image);
    BufferedImage bufferedImage = new BufferedImage(imageIcon
      .getIconWidth(), imageIcon.getIconHeight(),
      BufferedImage.TYPE_4BYTE_ABGR);
    Graphics2D g2D = (Graphics2D) bufferedImage.getGraphics();
    g2D.drawImage(imageIcon.getImage(), 0, 0, imageIcon
      .getImageObserver());
    int alpha = 0;
    for (int j1 = bufferedImage.getMinY(); j1 < bufferedImage
      .getHeight(); j1++) {
     for (int j2 = bufferedImage.getMinX(); j2 < bufferedImage
       .getWidth(); j2++) {
      int rgb = bufferedImage.getRGB(j2, j1);
   
      int R =(rgb & 0xff0000 ) >> 16 ;
      int G= (rgb & 0xff00 ) >> 8 ;
      int B= (rgb & 0xff );
      if(((255-R)<30) && ((255-G)<30) && ((255-B)<30)){
       rgb = ((alpha + 1) << 24) | (rgb & 0x00ffffff);
      }

bufferedImage.setRGB(j2, j1, rgb);

}
    }

g2D.drawImage(bufferedImage, 0, 0, imageIcon.getImageObserver());
    //ImageIO.write(bufferedImage, "png", new File("d:/test.png.png"));

ImageIO.write(bufferedImage, "png", byteArrayOutputStream);
   } catch (Exception e) {
    logger.error(e.toString());
   }finally{
  
   }

return byteArrayOutputStream.toByteArray();

}
}

java 创建PNG格式的透明背景的图片相关推荐

  1. 为什么存png还有白色底_用photoshop保存透明背景的图片为png格式,为什么打开后是白色背景了?...

    Photoshop想要保存透2113明背景的图片要保存PNG格式,保存JPG格式就5261会变成图片.41021.电脑打开Photoshop.2.打1653开Photoshop后,打开一张图片.3.打 ...

  2. 用Ps将PSD切片并将切片保存为透明背景的图片

    第一步:选择放大镜工具或者Ctrl++将要切片的部分放大. 第二步:选择移动工具单击要切片的部分,在右边的图层栏找到要切片的图层在文字上右键选择转换为智能对象,再右键该图层的文字选择栅格化图层. 第三 ...

  3. Graphics2D 在一张图片上添加一个带有透明背景的图片或绘制透明图片

    目录 代码实例 代码实例 // 读取原图片信息 底图//得到文件File file = new File("d:\\1.png");//文件转化为图片Image srcImg = ...

  4. java编写的网页版 纯色背景图片去除底色工具,变成透明背景的图片工具发布...

    程序使用java语言编写,工作原理是取图片边缘的像素点作为要替换的背景色,然后将所有像素点与该颜色进行比较,发现相同则将颜色不透明度设置为0,使颜色完全透明. 下面是一个在线版: 一.访问图片去底工具 ...

  5. java 显示透明背景png图片

    首先理由ps生成一个背景透明的png图片,然后设置JPanel面板的透明属性,也就是panel.setOpaque(false);设置为透明 class MyPanel extends JLayere ...

  6. php 网页 透明背景图片,php 处理透明背景的图片时的问题

    PHP图象处理之透明背景的gif和png图片的一些问题 1,直接读取有透明背景的PNG格式文件,然后直接输出,背景变成了黑色,gif则没有这种情况. 解决方法:使用 imagesavealpha ($ ...

  7. php 去掉图片背景透明背景图片,php 处理透明背景的图片时的问题

    PHP图象处理之透明背景的gif和png图片的一些问题 1,直接读取有透明背景的PNG格式文件,然后直接输出,背景变成了黑色,gif则没有这种情况. 解决方法:使用 imagesavealpha ($ ...

  8. 手写签名更改为透明背景png图片

    有时候我们需要将手写签名转换为透明背景的png图片来使用,作为非专业的ui,我们该怎么做呢? 结合wps和ps,转换就变得十分简单.祥看下面的操作步骤: 1. 将图片导入wps 2.选中图片,选择色彩 ...

  9. 如何在Matlab中得到透明背景的图片?

    2005-11-10 MATLAB输出的矢量图往往不是透明背景的,这样插在ppt中就会很难看,就像贴了膏药似的.关于在MATLAB中如何得到透明背景的矢量图,我有个经验就是:用MATLAB导出pdf图 ...

最新文章

  1. win7安装mysql-8.0.13-winx64
  2. python创建打开文件-Python文件处理:创建、打开、追加、
  3. 基于 abp vNext 和 .NET Core 开发博客项目 - 完善与美化,Swagger登场
  4. 谷歌浏览器安装过程 0911
  5. 速度提升2倍,超强悍CPU级骨干网络PP-LCNet出世!
  6. bzoj4600 [Sdoi2016]硬币游戏 sg函数+结论
  7. POJ3246-Balanced Lineup,好经典的题,做法和HDU-I hate it 一样~~
  8. python自动化读取和写入文件_基于Python的接口自动化读写excel文件的方法
  9. 百度编辑器(ueditor)魔改:5、自定义一键排版(按照需求保留标签和样式)
  10. Excel双样本T检验之异方差检验
  11. html项目符号怎么设成大圆点,Word里面的项目符号的圆点怎么变小个点?
  12. URLOS安装、升级、卸载
  13. uva437 巴比伦塔
  14. 【同花顺】同花顺解题
  15. 图形学 (-)数学基础
  16. 南京航空航天大学计算机组成原理,2017年南京航空航天大学计算机科学与技术学院829计算机专业基础之计算机组成原理考研题库...
  17. 知行EDI系统如何通过中间数据库表方式集成金蝶ERP
  18. 流程变革,从推倒三座大山开始
  19. 编写一个js函数,实时显示当前时间,格式:“年-月-日 时:分:秒”
  20. 搭建自己的dns服务器

热门文章

  1. 克服沟通障碍的三种方法
  2. Spring Boot安全管理
  3. 旺旺机器人的快捷短语_聊天宝_快捷回复_客服宝_智能客服是万能的吗?
  4. 操作系统(二)内存地址空间与虚拟内存
  5. 企业开发项目完整流程
  6. android cm12 截屏,CM系列ROM精简列表 可删软件服务汇总
  7. 手把手搭建自己的网站
  8. 谁是您眼里的好?您是谁眼里的草?
  9. 管理Exchange Online用户介绍(二)
  10. 解决SSH连接到服务器后因闲置时间导致的断开连接