java的图片背景透明及透明度处理

2023-10-27

如题,以下为通过java实现的针对图片的背景透明及透明度处理,供大家需要时参考:

/**
* 设置源图片为背景透明,并设置透明度
* @param srcFile 源图片
* @param desFile 目标文件
* @param alpha 透明度
* @param formatName 文件格式
* @throws IOException
*/
public static void transparentImage(String srcFile,String desFile,int alpha,String formatName) throws IOException{
    BufferedImage temp =  ImageIO.read(new File(srcFile));//取得图片
        transparentImage(temp, desFile, alpha, formatName);
    }
/**
* 设置源图片为背景透明,并设置透明度
* @param srcImage 源图片
* @param desFile 目标文件
* @param alpha 透明度
* @param formatName 文件格式
* @throws IOException
*/
public static void transparentImage(BufferedImage srcImage,
String desFile, int alpha, String formatName) throws IOException {
int imgHeight = srcImage.getHeight();//取得图片的长和宽
        int imgWidth = srcImage.getWidth();
        int c = srcImage.getRGB(3, 3);
        //防止越位
        if (alpha < 0) {
            alpha = 0;
         } else if (alpha > 10) {
            alpha = 10;
         }
        BufferedImage bi = new BufferedImage(imgWidth, imgHeight,
                BufferedImage.TYPE_4BYTE_ABGR);//新建一个类型支持透明的BufferedImage
        for(int i = 0; i < imgWidth; ++i)//把原图片的内容复制到新的图片,同时把背景设为透明
        {
            for(int j = 0; j < imgHeight; ++j)
            {
            //把背景设为透明
                if(srcImage.getRGB(i, j) == c){
                    bi.setRGB(i, j, c & 0x00ffffff);
                }
                //设置透明度
                else{
                int rgb = bi.getRGB(i, j);
                    rgb = ((alpha * 255 / 10) << 24) | (rgb & 0x00ffffff);
                    bi.setRGB(i, j, rgb);
                }
            }
        }
ImageIO.write(bi, StringUtils.isEmpty(formatName)?FORMAT_PNG:formatName, new File(desFile));
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java的图片背景透明及透明度处理 的相关文章

  • 上传进度条 Java Servlet?

    我想使用 servlet 显示上传进度条 我尝试过Ajax iFrame 技术 页面没有重新加载 文件也被上传 但是 进度条没有出现 有没有可用于 javaservlts 的 jQuery 进度插件 Thanks 我强烈推荐jQuery 上
  • 方法返回类型前的 是什么意思?

    下面的方法返回一个List组成T类型元素 public
  • 在Maven中生成Version.java文件

    我有一个使用 Ant 脚本构建的 Java 项目 我正在尝试将项目转换为 Maven 其中一项任务生成一个名为 Version java 的 Java 源文件 其中包含编译时间戳的静态字符串表示形式 如下所示 package com foo
  • Java将字符串解析为double

    如何解析字符串中的这个 Double 00034800 变成 Double 值 最后两位数字实际上是小数点 所以我正在寻找的结果是348 00 是否有这样的格式可以与十进制格式一起使用 Well String s 00034800 doub
  • 在Windows Server 2003下如何在本地系统帐户下运行jvisualvm.exe?

    我在带有 Java 1 6 u 20 的 Windows Server 2003 下将 GlassFish 3 0 1 作为 Windows 服务运行 总体上我很满意 我希望能够在这个 JVM 上使用 VisualVM 并使用无法在 Tom
  • java程序有多少种结束方式?

    我知道使用 System exit 0 可以结束一个java程序 例如 如果我有一个JFrame窗口 它会关闭并结束程序 但我想知道还有多少其他方法 可以关闭它并结束程序 包括发生错误时 程序会被关闭 JFrame也会被关闭吗 添加到其他答
  • 使用 proguard 混淆文件名

    我正在使用 proguard 和 Android Studio 混淆我的 apk 当我反编译我的apk时 我可以看到很多文件 例如aaa java aab java ETC 但我项目中的所有文件都有原始名称 有没有办法混淆我的项目的文件名
  • 在不支持 CAS 操作的处理器上进行 CompareAndSet

    今天 我在一次采访中被问到下一个问题 如果您在具有不支持 CAS 操作的处理器的机器上调用 AtomicLong 的compareAndSet 方法 会发生什么情况 您能否帮我解决这个问题 并在可能的情况下提供一些全面描述的链接 From
  • Java LostFocus 和 InputVerifier,按反向制表符顺序移动

    我有一个 GUI 应用程序 它使用 InputVerifier 在产生焦点之前检查文本字段的内容 这都是很正常的 然而 昨天发现了一个问题 这似乎是一个错误 但我在任何地方都找不到任何提及它的地方 在我将其报告为错误之前 我想我应该问 我在
  • 我对线程失去了理智

    我想要这个类的对象 public class Chromosome implements Runnable Comparable
  • java中如何知道一条sql语句是否执行了?

    我想知道这个删除语句是否真的删除了一些东西 下面的代码总是执行 else 是否删除了某些内容 执行此操作的正确方法是什么 public Deleter String pname String pword try PreparedStatem
  • ThreeTen 向后移植与 JSR-310 的比较

    由于某些原因 我们现在无法使用 java 8 我们仍然停留在 java 7 上 不过 我想使用新的JSR 310 date time APIs现在 使用官方向后移植 ThreeTen http www threeten org threet
  • 在 Spring 中为 @Pathvariable 添加类级别验证

    在发布这个问题之前 我已经做了很多研究并尝试了很多可用的解决方案 这是我陷入的棘手情况 我有一个 Spring 控制器 它有多个请求映射 它们都有 PathVariables 控制器如下所示 Controller EnableWebMvc
  • IntelliJ Idea:将简单的 Java servlet(无 JSP)部署到 Tomcat 7

    我尝试按照教程进行操作here http wiki jetbrains net intellij Creating a simple Web application and deploying it to Tomcat部署 servlet
  • UseCompressedOops JVM 标志有什么作用以及何时应该使用它?

    HotSpot JVM 标志是什么 XX UseCompressedOops我应该做什么以及什么时候使用它 在 64 位 Java 实例上使用它 与不使用它 时 我会看到什么样的性能和内存使用差异 去年大多数 HotSpot JVM 都默认
  • java实现excel价格、收益率函数[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 我所有的 java 应用程序现在都会抛出 java.awt.headlessException

    所以几天前我有几个工作Java应用程序使用Swing图书馆 JFrame尤其 他们都工作得很好 现在他们都抛出了这个异常 java awt headlessexception 我不知道是什么改变了也许我的Java版本不小心更新了 谢谢你尽你
  • 使用 Apache 允许 Glassfish 和 PHP 在同一服务器中协同工作

    是否可以建立从 Java 到 php 文件的桥梁 我有一个用 Java 编写的应用程序 我需要执行http piwik org http piwik org 这是用 PHP 编写的 在服务器中 我正在运行 PHP 但无法从浏览器访问 php
  • 使用 DBCP 配置 Tomcat

    在闲置一段时间 几个小时 后 我们收到了 CommunicationsException 来自 DBCP 错误消息 在异常中 位于这个问题的末尾 但我没有看到任何配置文件中定义的 wait timeout 我们应该看哪里 在 tomcat
  • GAE 无法部署到 App Engine

    我正在尝试从 Eclipse 发布 Web 应用程序 我在 GAE 上创建了四个项目 可以通过登录我的帐户并查看控制台来查看它们 我已经改变了appengine web xml到项目的应用程序 ID 如果我将其更改为 GAE 上第一个创建的

随机推荐

  • 研华工控机通过CAN2.0B控制自己制作的PCB电路板

    最近在做研华工控机控制输出IO 因为工控机的IO板卡比较贵 而且后面必须接继电器 这样会造成我们机器的电控柜比较大 电路走线非常困难 在这个原因的困扰下 我提出自己做一块IO驱动板的需求 最后在我们硬件工程师的努力下 总算完成IO驱动板的设
  • 在Windows下编译VLC并实现播放视频

    在Windows下编译VLC并实现播放视频 一 编译Win版的VLC真麻烦 二 获取VLC的SDK 1 下载VLC播放器 2 库文件 3 头文件 三 调用VLC实现播放视频 1 拷贝头文件和库文件 2 修改pro文件 3 封装播放器类VLC
  • 前端模块化!

    模块化 1 简介 模块化产生的背景 随着网站逐渐变成 互联网应用程序 嵌入网页的Javascript代码越来越庞大 越来越复杂 Javascript模块化编程 已经成为一个迫切的需求 理想情况下 开发者只需要实现核心的业务逻辑 其他都可以加
  • 基于微信小程序的电影院买票选座系统

    末尾获取源码 开发语言 Java Java开发工具 JDK1 8 后端框架 SSM 前端工具 微信小程序工具 数据库 MySQL5 7和Navicat管理工具结合 服务器 Tomcat8 5 开发软件 IDEA Eclipse 是否Mave
  • 借助EspExceptionDecoder工具分析定位esp8266或esp32异常问题

    借助EspExceptionDecoder工具分析定位esp8266或esp32异常问题 文章目录 借助EspExceptionDecoder工具分析定位esp8266或esp32异常问题 问题出现Exception stack EspEx
  • eclipse中文注释缩进问题

    1 问题 中文注释的缩进有问题 英文注释没有问题 2 查看当前字体 3 修改字体 改为宋体或其他字体 就没有该问题了 也可以选择系统字体
  • 【Markdown】 实现上角标和下角标的两种方法(详细讲解!!!)

    作者 MiTu 本帖内容著作权归作者所有 转载请务必保留本文链接 Markdown实现上下角标的两种方法 第一种 使用Markdown自带的代码格式 下标 内容 例 H2O H 2 O 上标 内容 例 210 2 10 第二种 使用 HTM
  • 又发现一个好玩的 Pycharm 插件,通过AI自动生成代码块注释

    经常在开发代码块的过程中都需要写大量的注释来完成对代码块的说明 作为一名程序猿可能经常在抱怨别人开发的代码块没有注释或是注释不清楚 但我们自己又不想把大量的时间花费在代码块注释的编写上面 今天要说的这款插件是Mintlify Doc Wri
  • Go工程化 - 依赖注入

    在微服务框架kratos v2的默认项目模板中kratos layout使用了google wire进行依赖注入 也建议开发者在维护项目时使用该工具 wire 乍看起来比较违反直觉 导致很多同学不理解为什么要用或不清楚如何用 也包括曾经的我
  • 利用react基础编写案例---【求和】

    案例图 redux方法 代码 index js import React from react import ReactDOM from react dom import App from App ReactDOM render
  • [vue3+ts]方法一:使用vuex的mapState和mapGetters

    src下新建hooks useState js import computed from vue import mapState useStore from vuex mapper是存在state中的数据 export function u
  • UDP协议的详细解析

    UDP数据报 一 UDP的概述 User Datagram Protocol 用户数据报协议 UDP是传输层的协议 功能即为在IP的数据报服务之上增加了最基本的服务 复用和分用以及差错检测 UDP提供不可靠服务 具有TCP所没有的优势 UD
  • 关于java.lang.NullPointerException报错的原因和解决方法

    空指针异常 某个对象为null 对该对象的访问就会抛出空指针异常 解决 需找到该异常位置并在处理或调用对象的时候需要判断是否为null 如 Long echostr null String str echostr toString 当ech
  • R语言中将hello打印10次的两种方法

    我们有两种方法来做这件事情 1 for结构 for循环重复的执行一个语句 直到某个变量的值不再包含在序列seq中为止 语法 for var in seq statement 例如 gt for i in 1 10 print Hello 1
  • lumen ”Cannot declare class Event“ 错误解决方法

    在安装php event扩展的服务器上运行lumen框架是会报错 ErrorException Cannot declare class Event because the name is already in use 详细错误信息如下图所
  • Flink 报错:写入数据到流加载失败

    近年来 随着大数据技术的飞速发展 Apache Flink 成为了一个广泛应用的流式处理框架 然而 在使用 Flink 进行数据处理时 有时候我们可能会遇到一些错误和异常 其中一种常见的问题是 Writing records to stre
  • mfc 一些杂七杂八的东西

    cstring CString Left int nCount const 从左边1开始获取前 nCount 个字符 CString Mid int nFirst const 从左边第 nCount 1 个字符开始 获取后面所有的字符 CS
  • Qt多个ui界面,如何建立联系

    https blog csdn net qq 41399894 article details 87460230 一 最简单的方法 无非就是你建了多个ui界面 然后你只需要new它 获得它的地址信息 就可以建立联系了 如下 在MainWin
  • 酒浓码浓 - React事件阻止浏览器默认行为/冒泡

    React事件行为 React中无法用return false去阻止事件的默认响应行为 必须用 event preventDefault 阻止浏览器默认行为 例如标签不跳转 注 IE不认 在IE下需要用window event return
  • java的图片背景透明及透明度处理

    如题 以下为通过java实现的针对图片的背景透明及透明度处理 供大家需要时参考 设置源图片为背景透明 并设置透明度 param srcFile 源图片 param desFile 目标文件 param alpha 透明度 param for