java最强图片弱化源码&&详细注释-----从此告别单身

使用javax.imageio.ImageIO读取JPEG图片时出现异常java.awt.color.CMMException: General CMM error517 使用Java读取JPEG图片时出现异常java.awt.color.CMMException: General CMM error517问题描述解决 问题描述 由于业务需要,生产环境需要将用户上传的图片压缩。 使用javax.imageio.ImageIO.read(java.io.File input) 方法读取图片。代码如下: BufferedImage img = ImageIO.read... 阅读详情

原图                                                            编译后                                                                                                                         

                                                                                                                                             

 

源码如下:注释超全哦

package com.sirius.utils;


import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;

/**
 * className:MyFontImage
 * Description:图片弱化
 *
 * @author:yanmh
 */

public class MyFontImage {
    /**
     * 取想要转换的图片
     *
     * @param write
     * @param pathFile
     * @return void
     */
    //再读取想要转换的图片
    public static void createFongImg(String write,String pathFile){

        String base = write;
        try{
            //使用 ImageIO 中提供的静态方法 read(),传入一个文件,read() 方法回返回一个 BufferedImage 类型的图片缓存流。我们通过new File(path),来创建一个文件流。
            /**
             *   注意 图片不能使用的ps过的图片存在异常
             *   javax.imageio.IIOException: Unsupported Image Type
             *   at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:1068)
             *   at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:1039)
             *   at javax.imageio.ImageIO.read(ImageIO.java:1448)
             *   at javax.imageio.ImageIO.read(ImageIO.java:1308)
             */
            BufferedImage image = ImageIO.read(new File(pathFile));
            //1.再创建一个 BufferedImage 用于放置我们输出文字的图片。参数呢就是图片的宽度,图片的高度,和图片的类型。
            BufferedImage newImage = new BufferedImage(image.getWidth(),image.getHeight(),image.getType());
            //2.创建一个2D坐标转换及绘图相关的类 Graphics2D,用来设置每个像素点的颜色、字体大小和字体样式。
            Graphics2D graphics2D = (Graphics2D) newImage.getGraphics();
            //3.设置字体风格、样式和大小
            graphics2D.setFont(new Font("宋体",Font.BOLD,12));
            int index = 0;
            //4.下面就是写一个for循环,循环遍历每一个像素点,将每隔12个像素点就替换为文字。
            for(int y = 0; y < image.getHeight(); y += 12){
                for (int x = 0; x < image.getWidth(); x += 12){
                    //5.循环每一个像素点

                    //6.获取图片当前位置像素的颜色
                    int pxcolor = image.getRGB(x,y);
                    //7.分离出rgb三种颜色,分别进行灰度和二值化处理
                    int r = (pxcolor & 0xff0000) >> 16,
                            g = (pxcolor & 0xff00) >> 8,
                            b = pxcolor & 0xff;
                    //8.通过graphics2d设置字体颜色
                    graphics2D.setColor(new Color(r, g, b));
                    //9.在当前位置上绘上一个文字
                    graphics2D.drawString(String.valueOf(base.charAt(index % base.length())), x, y);
                    //10.当前文字被绘上以后绘制下一个文字
                    index++;
                }
            }
            //11.通过 ImageIO 方法,把图片重新绘制,并输出
            ImageIO.write(newImage, "jpg", new FileOutputStream(pathFile));
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    public static void main(String args[]){
        MyFontImage.createFongImg("我爱你","C:\\Users\\Cordova\\Desktop\\timg.jpg");
        System.out.println("OK");
    }

}

 

openjdk7的ImageIO.read()导致jvm异常crash 首先服务器用的是openjdk7,下面是读取图片的代码 public static JSONObject getPicDetail(String picPath) { JSONObject picObj = new JSONObject(); try { File picFile = new File(picPath); 阅读详情

相关推荐

STM32H7B0VBT6使用Free RTOS配置SD卡+Fatfs文件管理系统

STM32H7B0VBT6使用Free RTOS配置SD卡+Fatfs文件管理系统,记录配置过程

Jack的小窝 5942

Java ImageIO 类详解

Java 中的 ImageIO 类是 Java 标准库中用于处理图像的一个非常常用的 API,它提供了读取和写入多种常见图像格式的功能,如 JPEG、PNG、BMP、GIF 等。开发者可以通过 ImageIO 类轻松地读取和写入图像,而无需考虑底层的细节。本文将全面详细地介绍 Java 中的 ImageIO 类的使用方法。

BASK2312的博客 2850

如何制作Mike21溢油模型围油栏文件

这段时间群友在做海洋环评的做了一个MIKE21的溢油模型,溢油模型其实也是ECOLAB模块的应用,而在海上发生溢油事件的时候,为防止溢油对海洋生态的破坏,经常使用的一种手段就是使用围油栏技术将溢油控制在一定范围并进行处理。今天小编就给大家说说在MIKE21里怎么实现围油栏文件的制作

zhuzhujiayoua的博客 1329

Java 读取jpeg图片 Unsupported Image Type 异常

使用Java的ImageIO做一些图片处理的工作,突然今天有人反馈说我的程序无法处理jpg图片。我拿到图片进行调试,出现了如下报错: javax.imageio.IIOException: Unsupported Image Type at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(Unknown S...

Dancen的专栏 4843

Proteus课设原理图及报告

1. I/O 口:32 个可编程 I/O 引脚,分成 4 个并行 I/O 端口 (P0, P1, P2, P3),P0 功能段选 a、b、c、d、e、f、g、dp 使其中部分点亮,P2 功能为位选 1、2、4.按键操作分析:P3.0-设置时钟的时间,P3.1-确定更改的时钟时间,P3.2-对。时钟设置标志 0 不设置,1 设置时,2 设置分,3 设置秒。P3.0 按下的次数对应 不设置,设置时,设置分,

2303_76688805的博客 1176

S32K314 EB配置MCAL全模块讲解【Autosar——1 MCU模块详解】持续更新中

FIRC(fast internal RC Oscillator) :高速内部时钟,固定48MHZ;SIRC(Slow Internal RC Oscillator):低速内部时钟,固定32KHZ;FXOSC(Fast Crystal Oscillator Digital Controller):高速外部晶振(8-40MHZ),根据原理图选型进行配置;SXOSC():外部低速外部时钟,固定输入32.768KHZ;PLL_PHIn_CLK:时钟倍频锁相环时钟范围(640-1280MHZ);

qq_40488886的博客 1781

java not a jpeg file_javax.imageio.IIOException: Not a JPEG file: starts with 0x47 0x49

java处理图片时出现异常javax.imageio.IIOException: Not a JPEG file: starts with 0x47 0x49at com.sun.imageio.plugins.jpeg.JPEGImageReader.readImageHeader(Native Method)at com.sun.imageio.plugins.jpeg.JPEGImageRe...

weixin_28989055的博客 784

rk3568 rk628桥片 rgb2hdmi

RK628 是瑞芯微全新推出的视频桥接芯片,支持丰富的显示接口,支持高分辨率大屏产品转换需求。基于DRM、FB的显示框架易于使用。 输入信号支持:HDMI、RGB、BT.1120,输出信号支持 HDMI、GVI、Dual LVDS、Dual MIPI、MIPI-CSI、RGB、BT.1120,最高支持4K 60fps 输入/输出转换,并且支持输入到输出 1/4~4倍的缩放。

weixin_35723192的博客 451

Java处理图片时出现异常

Java处理图片时出现异常 javax.imageio.IIOException: Not a JPEG file: starts with 0x47 0x49 at com.sun.imageio.plugins.jpeg.JPEGImageReader.readImageHeader(Native Method) at com.sun.imageio.plugins.jpeg.JPEGI

zhangpengself520的博客 2969

Linux LT8912b调试记录(MIPI转LVDS/HDMI)

本文记录了在RK3588平台上使用LT8912B芯片实现MIPI转LVDS/HDMI的调试过程。主要包含设备树配置、驱动代码实现及常见问题解决。调试重点包括:1)正确配置1280x800分辨率的LVDS屏幕参数;2)确保I2C总线正常通信;3)解决花屏、图像抖动、黑屏等问题,涉及lane-rate计算、同步信号极性调整及MIPI模式选择。文中提供了详细的寄存器配置代码和故障排查方法,特别强调了I2C通信验证和电压匹配的重要性。通过参数优化和多种模式测试,最终实现了稳定的视频输出转换。

qq_45147279的博客 1087

多跳问答技术解析:从原理到金融领域实践

多跳问答(Multi-hop QA)是自然语言处理中的高级任务,要求系统通过多步推理整合分散信息来回答问题。其核心技术在于理解文档间的复杂关联,相比单跳问答需要更精细的数据集设计和模型架构。在金融、医疗等专业领域,多跳问答能有效处理如'腾讯大股东投资的港股上市公司'这类需要串联多个信息点的问题。典型实现方案包括MR-Search框架的三级检索器设计,分别处理实体召回、关系匹配和数值比较。当前最佳实践表明,结合稠密检索与稀疏检索的混合策略,配合动态路由机制,能在保持较高精度的同时控制计算成本。这类技术在金融风

weixin_42566072的博客 606

记一次堆外内存泄漏分析

记一次堆外内存泄漏分析

聚焦AI技术前沿,深度解析大模型原理与多场景应用,探索最新突破与落地实践,助力行业洞悉趋势,驱动智能转型,赋能千行百业。 1万+

YOLOv11改进策略【模型轻量化】| 替换骨干网络为 2024轻量化网络MoblieNetV4:移动生态系统的通用模型

一、本文介绍 本文记录的是基于MobileNet V4的YOLOv11目标检测轻量化改进方法研究。MobileNet V4通过整合UIB、Mobile MQA以及优化的NAS策略,能够在在不降低性能指标的前提下,降低计算成本。本文配置了原论文中MNv4-Conv-S、MNv4-Conv-M、MNv4-Conv-L、MNv4-Hybrid-M和MNv4-Hybrid-L五种模型,以满足不同的需求。 模型 参数量 计算量 推理速度 YOLOv11m 20.0M 67.6GFLOPs 3.5ms

Limiiiing的博客 4456

java图片处理Unsupported Image Type解决

java图片处理Unsupported Image Type解决

Master_Shifu_的博客 2995

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

java 生成缩略图_Java生成缩略图之Thumbnailator

Thumbnailator 是一个为Java界面更流畅的缩略图生成库。从API提供现有的图像文件和图像对象的缩略图中简化了缩略过程,两三行代码就能够从现有图片生成缩略图,且允许微调缩略图生成,同时保持了需要写入到最低限度的代码量。同时还支持根据一个目录批量生成缩略图。http://code.google.com/p/thumbnailator/版本:thumbnailator-0.4.2.jar原...

weixin_33359523的博客 608

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

maven编译提示:程序包com.sun.image.codec.jpeg不存在,替换为ImageIO解决办法

前几天,遇见一个很头疼的问题,我解决了一下午现在和大家分享一下,再写一段图片压缩的代码使用了com.sun.image.codec.jpeg这个类,本地跑项目没有问题,但是jenkins构建的时候提示的程序包com.sun.image.codec.jpeg不存在,去各种百度才发现编译失败原因是: JDK7的时候,com.sun.image.codec.jpeg类已经退休了,以后凡是带sun.*的...

weixin_43549912的博客 3468

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java代码注释加入图片和表格

注释中加入图片 /** * <img width="宽度" height="高度" src="图片url" alt=""> */ 图片URL自行挑选。我这里使用了某开源库的图片url: /** * The following is the design idea of this class: * <img width="640" height="320" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx

pan2635376816的博客 5423

Java基础---如何在Java中注释(十)

如何在Java中使用注释在编写程序时,经常需要添加一些注释,用以描述某段代码的作用。一般来说,对于一份规范的程序源代码而言,注释应该占到源代码的 1/3 以上。因此,注释是程序源代码的重要组成部分,一定要加以重视哦!Java 中注释有三种类型:单行注释、多行注释、文档注释运行结果:看:被注释的代码块在程序运行时是不会被执行的~~我们可以通过 javadoc 命令从文档注释中提...

weixin_33769125的博客 477

java 图片清晰度_Java 图片处理——如何生成高清晰度而占有磁盘小的缩略图

现在的web项目,图片越来越多,图片大小也越来越大,随便就能达到1M,2M,甚至更大。用户上传的图片,一般是无法直接使用的。一般要生成两三种对应的缩略图,分别适配不同的终端,不同的场景。比如PC,手机,平板等等不同的终端;在比如图片列表和图片详情,肯定一个要使用缩略图,一个要使用高清图。一般图片优化的第一步,就是在适当的地方使用缩略图,尽量不要在web端使用CSS缩放高清原始图片。下面分析了Jav...

weixin_29553791的博客 2485

java图片验证码注解版

package com.jk.utils; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Date; import java.util....

程门立雪的博客 486

JAVA代码注释规范

JAVA代码注释规范一、    规范存在的意义1.  好的注释规范可以让人一眼看明白这是干什么的,特别是对于我们这种行业;共同合作完成一个项目需要分工明确,所以也需要有明了的注释规范。2.  正确的应用注释规范可以增加代码的可读性、理解性。3.  好的代码规范可以提高团队的开发效率,从而节省时间。4.  长期的坚持代码规范可以让程序员养成一个良好的习惯,甚至锻炼出思维。二、    命名规范1.  ...

zwwlxf的博客 1万+

一张图看懂Java注解(Annotation)

敬语 为常年奋斗、努力工作在一线,并为Java发展做出突出贡献的的大佬们致敬,此处深思几分钟… 科普 Annotation:In the Java computer programming language, an annotation is a form of syntactic metadata that can be added to Java source code.[1] Cla

Ma Ding的博客 923

JavaSE基础(6) 三种注释

Java注释可以帮助我们去理解代码,javac 不会去编译注释,java运行也不会去管我们注释的内容,注释的作用就是让我们可以给代码添加自己理解的意思,这样方便我们以后再次去看代码的时候以防止遗忘不知道该处代码的意义作用。 1.单行注释: // 单行肯定只能注释一行的内容,这个用在注释信息内容少的地方 2.多行注释: /* */ 多行多行就是可以注释很多行的内容三,一般首...

郑清 2308

Java的几种注释

Java的注释方法大致有以下三种: 1.// ……单行注释。 该种注释用于在写代码的时候对自己的代码进行标注,以方便自己和别人之后查看。以HelloWorld为例,代码如下 public class HelloWorld{ public static void main(String [] args){ System.out.println("HelloWorld ");//输出指令 }...

g4ilolii的博客 1585
上一篇: Java的基础类型Double三个基础常量
下一篇: 什么是缓存雪崩、缓存击穿、缓存穿透,三者解决方案
HelloWorld_AA
博客等级 码龄9年 18粉丝 96原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值