`
Thomas会Coding
  • 浏览: 96704 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 创设PNG格式的透明背景的图片(转载)

 
阅读更多

java 创建PNG格式的透明背景的图片(转载)
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在播种机作业环境创设上的应用.pdf

    "三维仿真及Java在播种机作业环境创设上的应用" 本文讨论了三维仿真技术在播种机作业环境创设上的应用,探索了Java软件在农机数字化设计中的应用。通过对农机漫游系统的初步开发,实现了农机新产品虚拟测试的方法。...

    环境创设学前教育论文.doc

    "环境创设学前教育论文" 环境创设是幼儿园教育的重要组成部分,影响着幼儿的发展和学习。环境创设能力是评价教师素质的标准之一,教师需要掌握环境创设能力,创设良好的环境,使幼儿能够通过区域环境发挥其内在潜能...

    幼小衔接“我要上小学”主题背景下的环境创设与材料提供精选.doc

    6. 教育环境的创设:环境是重要的教育资源,通过创设"江海第三小学"这样的区域,让孩子在游戏中体验小学生活,比如完成课程表、整理书包等任务,从而培养他们的任务意识和规则意识。 7. 操作活动的设计:每个活动都...

    创设外语学习环境记录表.doc

    创设外语学习环境是提升外语教学效果的关键环节,尤其对于儿童和初学者而言,一个良好的学习环境能够激发他们的学习兴趣,提高语言习得的效率。本篇内容将围绕"创设外语学习环境记录表"这一主题,深入探讨如何有效地...

    幼儿园教育环境创设题库.pdf

    【幼儿园教育环境创设】是幼儿教育的重要组成部分,旨在通过精心设计和安排的物质与精神环境,促进幼儿的全面发展。幼儿园环境的内涵包括园内的物质条件(如场地、设备)和精神条件(如集体氛围、心理因素),同时,...

    幼儿园户外环境的创设与利用策略.zip

    《幼儿园户外环境的创设与利用策略》 在幼儿教育中,户外环境的创设与利用扮演着至关重要的角色。它不仅为孩子们提供了探索、学习和发展的空间,还能促进他们的身心健康,培养良好的社交能力和团队协作精神。这篇...

    数字化环境园所环境创设图片资料及案例分析.zip

    "数字化环境园所环境创设图片资料及案例分析.zip"这个压缩包文件,显然是为教育工作者提供了一个宝贵的资源库,帮助他们理解和实践如何创建一个富有创新和技术支持的教育环境。 首先,我们来探讨“数字化环境”的...

    小学数学教学中常用12种创设情境方法.pdf

    11. **利用多媒体技术创设问题情境**:运用图片、动画、视频等多媒体手段,使抽象的数学概念形象化,帮助学生更好地理解和掌握。 12. **设计挑战性任务创设问题情境**:设置有一定难度的任务,鼓励学生尝试解决,这...

    信息化背景下小学数学教学中有效情境创设的实践探析.docx

    ### 信息化背景下小学数学教学中有效情境创设的实践探析 #### 摘要: 随着信息技术的迅速发展,其在教育领域的应用日益广泛。在信息化的背景下,小学数学教学面临着前所未有的机遇与挑战。情境教学法作为一种有效的...

    第一章幼儿园环境创设的理论基础.ppt

    本章主要探讨了四种心理学流派对于幼儿园环境创设的见解,分别是机能主义心理学、行为主义心理学、格式塔心理学以及精神分析学派。 **机能主义心理学**关注的是心理功能而非结构,认为环境在个体适应和生存中起着...

    双减背景下初中语文高效课堂教学情境的创设研究课题设计与论证报告.docx

    国家为了切实提升学校育人水平,持续规范校外培训,有效减轻义务教育阶段学生过重作业负担和校外培训负担,印发了《关于进一步减轻义务教育阶段学生作业负担和校外培训负担的意见》(简称“双减”)。...

    幼儿园环境创设与玩教具制作教学大纲.pdf

    《幼儿园环境创设与玩教具制作》是一门专为美术教育专业学生设计的专业课程,旨在培养具有专业知识和技能的幼儿园环境设计与玩教具制作人才。课程涵盖幼儿园室内外空间环境创设、墙饰设计与制作、区域环境设置以及玩...

    浅谈主题背景下幼儿园班级环境创设.doc

    浅谈主题背景下幼儿园班级环境创设.doc

    创设意象之程序员Demo宣传PPT动画.rar

    PPT动画用橙色、青色、绿色作为PPT背景,抽象的图形、PPT插图、PPT图标素材作为PPT背景图片,PPT模板内容页,以“猿团模块商城上线”为主题,设计新颖大气,PPT动画演示效果非常时尚;本套PPT动画可供喜欢的人下载...

    幼儿园环境创设与利用之班级环境创设策略1.doc

    【幼儿园班级环境创设策略】 班级环境创设在幼儿园教育中扮演着至关重要的角色,它不仅是幼儿园的外在装饰,更是展示教育理念和课程内涵的关键途径。尤其在墙面环境创设方面,它能够体现幼儿的学习成果,提供操作...

    我理想中的幼儿园环境创设.pdf

    我理想中的幼儿园环境创设.pdf

    2021年教师招聘考试题库《幼儿园环境创设》必考知识点带答案解析.docx

    【教师招聘考试】是针对教育行业的专业招聘考试,其中【幼儿园环境创设】是重要的考核内容之一。这个部分主要考察考生对于如何构建有利于幼儿发展的幼儿园环境的理解和实践能力。 1. **家园合作形式** - 家长参与...

    我理想中的幼儿园环境创设.doc

    【幼儿园环境创设的重要性】 幼儿园环境创设是幼儿教育中不可或缺的一部分,它直接影响着幼儿的身心健康和全面发展。根据《幼儿园教育指导纲要》的要求,幼儿园环境应为幼儿提供安全、丰富的生活和活动空间,以满足...

    信息化背景下的初中物理教学情境创设研究.docx

    ### 信息化背景下的初中物理教学情境创设研究 #### 摘要 随着信息技术的快速发展,初中物理教学面临着新的挑战与机遇。为了更好地适应信息化时代的教育需求,初中物理教师需不断创新教学方法,尤其是在情境创设方面...

    创设情境,让深度学习真实发生.pdf

    在这份教学探讨文献中,探讨了如何通过创设情境来促进小学生的深度学习,特别针对道德与法治课程。深度学习是当代学习科学理论中的一个重要概念,指学生在已有的认知基础上,通过体验与实践,积极主动地、批判性地...

Global site tag (gtag.js) - Google Analytics