当前位置: 首页 > news >正文

Java 实现不改变图片尺寸,增大图片大小(kb)

需求描述:

碰到一个需求,要求图片必须达到一定的大小,但是图片的尺寸还不能变化,这可咋整,想了好久没找到解决办法,然后根据windows的copy命令启发想到了这个方法,原理和windows的copy命令的原理一样,都是拼接图片内容,从而让图片达到指定大小。

# windows 图片复制命令(cmd操作)
copy /b a.jpg+a.jpg b.jpg

解决:

代码如下,就是将a图片的内容拼接到b图片上,b图片就是我们需要的图片,对于a图片来说没有任何要求,就是相当于给b图片做内容填充。之所以有这个效果是因为图片都具有特定的开头和结尾标识,我们这么操作不会影响原图片的信息。下面我进行了多次拼接,其实完全可以找一张需要的大小图片做原始图片将其直接拼接到我们需要的图片上就行了。


import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;/*** @Author: pcc* @Description: 一句话描述该类*/
public class Test {public static void main(String[] args) {String sourceFile = "D:\\新建文件夹\\a.jpg";String destinationFile = "D:\\新建文件夹\\b.jpg";try {// 检查源文件是否存在if (!Files.exists(Paths.get(sourceFile))) {throw new IOException("Source file does not exist: " + sourceFile);}appendFiles(sourceFile, destinationFile);System.out.println("Files have been appended successfully.");} catch (IOException e) {System.err.println("An error occurred: " + e.getMessage());e.printStackTrace(); }}private static void appendFiles(String sourceFile, String destinationFile) throws IOException {byte[] buffer = new byte[1024];int bytesRead;for (int i = 0; i < 5; i++) {try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(sourceFile));BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destinationFile, true))) {while ((bytesRead = bis.read(buffer)) != -1) {bos.write(buffer, 0, bytesRead);}}}}}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 虚幻5|技能栏UI优化(3)——优化技能UI并实现显示背景UI,实现技能界面设计,实现技能栏的删除和添加
  • 合宙LuatOS产品规格书——Air700EAQ
  • Redis安装+常用命令合集大全+Redis Desktop Manager
  • jQuery基础——选择器的补充方法——过滤方法、查找方法
  • 【Kotlin设计模式】Kotlin实现装饰器模式
  • 【Linux】FRP:内网穿透
  • 使用 AI进行绘画初体验
  • 易语言教程——第四章—第一个程序—串口调试助手
  • 跨vue、react、angular框架渲染
  • 使用Vue创建cesium项目模版该如何选择?
  • 用Python在PDF文档中创建动作
  • 使用实例:xxl-job应用在spring cloud微服务下
  • uniapp组件用法
  • PTA - C语言接口题集1
  • linux下cpu多核运行程序以及运行时间统计
  • Bytom交易说明(账户管理模式)
  • Centos6.8 使用rpm安装mysql5.7
  • CSS实用技巧
  • echarts的各种常用效果展示
  • Electron入门介绍
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • Git学习与使用心得(1)—— 初始化
  • PHP变量
  • spring boot 整合mybatis 无法输出sql的问题
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • 讲清楚之javascript作用域
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 前端面试总结(at, md)
  • 如何学习JavaEE,项目又该如何做?
  • 微信小程序实战练习(仿五洲到家微信版)
  • 小李飞刀:SQL题目刷起来!
  • 一些css基础学习笔记
  • 移动端 h5开发相关内容总结(三)
  • ionic异常记录
  • scrapy中间件源码分析及常用中间件大全
  • ​2020 年大前端技术趋势解读
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • $.ajax()参数及用法
  • (10)STL算法之搜索(二) 二分查找
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (计算机网络)物理层
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (全注解开发)学习Spring-MVC的第三天
  • (四)opengl函数加载和错误处理
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • ******之网络***——物理***
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET 设计一套高性能的弱事件机制
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .net分布式压力测试工具(Beetle.DT)