解决Java对图片进行裁剪后图片偏色现象

2024-02-11 13:20

本文主要是介绍解决Java对图片进行裁剪后图片偏色现象,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 问题描述
    • 图片展示
    • 问题代码
  • 问题分析
  • 解决问题
    • 实现代码

问题描述

使用Java代码下载图片,并对图片进行裁减后,图片出现偏色的现象。

图片展示

原图:
裁剪前的原图
裁剪后得到的图片
裁剪后的图片

问题代码

这里隐去公司信息,自己写了个demo,问题代码如下:

@Slf4j
public class FileUtil {public static void main(String[] args) {// urlString[] urls = new String[]{"http://test:18181/g1/M01/00/01/rBQZSl5YrLKAE0xcABCU9yL_rvI049.jpg","http://test:18181/g1/M01/00/01/rBQZSl5YvVWAD80KAAyrNKu2dbM553.jpg","http://test:18181/g1/M00/00/01/rBQZSl5Xnf-AMoS6AADcVze2Feg316.jpg","http://test:18181/g1/M01/00/00/rBQZSl5VDeiAWTzTAAYDKkQlXwM345.jpg"};Arrays.stream(urls).forEach(url -> {// 获取图片文件名String picName = url.substring(url.lastIndexOf("/") + 1);// 下载图片byte[] imageData = downloadImage(url);// 这里对图片进行裁减,并转码获得其base64串InputStream inputStream = new ByteArrayInputStream(imageData);ByteArrayOutputStream outputStream = new ByteArrayOutputStream();byte[] transformImageData = null;try {BufferedImage bufferedImage = ImageIO.read(inputStream);int width = bufferedImage.getWidth();int height = bufferedImage.getHeight();int leftX = width / 2;int leftY = height / 2;// 进行图片裁减,这里裁减的坐标不是实际裁剪坐标,是随便写的BufferedImage cutImage = bufferedImage.getSubimage(leftX,leftY,width,height);// 将图片转为ByteArrayOutputStream ,图片格式全部转为jpgImageIO.write(cutImage, "jpg", outputStream);transformImageData = outputStream.toByteArray();String base64 = Base64.getEncoder().encodeToString(transformImageData);log.info("base64={}", base64);} catch (IOException e) {System.out.println(e.getMessage());}});}
}

问题分析

在网上找了很多文章,发现之前也有网友遇到类似的情况,但文章没有给出具体方

这篇关于解决Java对图片进行裁剪后图片偏色现象的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/699891

相关文章

使用Python进行文件读写操作的基本方法

《使用Python进行文件读写操作的基本方法》今天的内容来介绍Python中进行文件读写操作的方法,这在学习Python时是必不可少的技术点,希望可以帮助到正在学习python的小伙伴,以下是Pyth... 目录一、文件读取:二、文件写入:三、文件追加:四、文件读写的二进制模式:五、使用 json 模块读写

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去

Java操作ElasticSearch的实例详解

《Java操作ElasticSearch的实例详解》Elasticsearch是一个分布式的搜索和分析引擎,广泛用于全文搜索、日志分析等场景,本文将介绍如何在Java应用中使用Elastics... 目录简介环境准备1. 安装 Elasticsearch2. 添加依赖连接 Elasticsearch1. 创

C#中图片如何自适应pictureBox大小

《C#中图片如何自适应pictureBox大小》文章描述了如何在C#中实现图片自适应pictureBox大小,并展示修改前后的效果,修改步骤包括两步,作者分享了个人经验,希望对大家有所帮助... 目录C#图片自适应pictureBox大小编程修改步骤总结C#图片自适应pictureBox大小上图中“z轴

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas

Spring核心思想之浅谈IoC容器与依赖倒置(DI)

《Spring核心思想之浅谈IoC容器与依赖倒置(DI)》文章介绍了Spring的IoC和DI机制,以及MyBatis的动态代理,通过注解和反射,Spring能够自动管理对象的创建和依赖注入,而MyB... 目录一、控制反转 IoC二、依赖倒置 DI1. 详细概念2. Spring 中 DI 的实现原理三、

SpringBoot 整合 Grizzly的过程

《SpringBoot整合Grizzly的过程》Grizzly是一个高性能的、异步的、非阻塞的HTTP服务器框架,它可以与SpringBoot一起提供比传统的Tomcat或Jet... 目录为什么选择 Grizzly?Spring Boot + Grizzly 整合的优势添加依赖自定义 Grizzly 作为

Java后端接口中提取请求头中的Cookie和Token的方法

《Java后端接口中提取请求头中的Cookie和Token的方法》在现代Web开发中,HTTP请求头(Header)是客户端与服务器之间传递信息的重要方式之一,本文将详细介绍如何在Java后端(以Sp... 目录引言1. 背景1.1 什么是 HTTP 请求头?1.2 为什么需要提取请求头?2. 使用 Spr

Java如何通过反射机制获取数据类对象的属性及方法

《Java如何通过反射机制获取数据类对象的属性及方法》文章介绍了如何使用Java反射机制获取类对象的所有属性及其对应的get、set方法,以及如何通过反射机制实现类对象的实例化,感兴趣的朋友跟随小编一... 目录一、通过反射机制获取类对象的所有属性以及相应的get、set方法1.遍历类对象的所有属性2.获取

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j