对图片主体裁剪

        /*** 对图片主体裁剪* @param originFile        待处理图片* @param outFile           输出图片* @param x                 输出图片的x坐标* @param y                 输出图片的y坐标* @param width             输出图片的宽* @param height            输出图片的高* @return* @throws Exception*/public static ImgHandleResult cut(String originFile, String outFile, int x, int y, int width, int height) throws Exception {String sourceFileFormat = originFile.substring(originFile.lastIndexOf(".") + 1).toLowerCase();FileInputStream fileInputStream = null;ImageInputStream imageInputStream = null;// 读取原始图片fileInputStream = new FileInputStream(originFile);// ImageReader解码指定格式ImageReader imageReader = ImageIO.getImageReadersByFormatName(sourceFileFormat).next();// 获取图片流imageInputStream = ImageIO.createImageInputStream(fileInputStream);// 将imageInputStream标记为true(只向前搜索)意味着包含在输入源中的图像将只按顺序读取imageReader.setInput(imageInputStream, true);//指定如何在输入时从 Java Image I/O框架的上下文中的流转换一幅图像或一组图像ImageReadParam imageReadParam = imageReader.getDefaultReadParam();// 定义空间中的一个区域Rectangle rectangle = new Rectangle(x, y, width, height);// 提供一个 BufferedImage,将其用作解码像素数据的目标。imageReadParam.setSourceRegion(rectangle);// 读取索引imageIndex指定的对象BufferedImage bufferedImage = imageReader.read(0, imageReadParam);// 保存新图片ImageIO.write(bufferedImage, sourceFileFormat, new File(outFile));File file = new File(outFile);// 保存新图片ImageIO.write(bufferedImage, sourceFileFormat, file);imageInputStream.close();fileInputStream.close();new File(originFile).delete();ImgHandleResult imgHandleResult = new ImgHandleResult();imgHandleResult.setImageSize(BigDecimalUtils.toMb(new BigDecimal(file.length())));imgHandleResult.setImageWidth(width);imgHandleResult.setImageHeight(height);imgHandleResult.setImageSrc(outFile);return imgHandleResult;}

图片居中合成

/*** 图片居中合成* @param originFile        待处理图片* @param outFile           输出图片* @param width             原图的宽* @param height            原图的高* @return* @throws Exception*/@SneakyThrowspublic static ImgHandleResult imageSynthesis(String originFile, String outFile , int width, int height) {FileInputStream inputStream = new FileInputStream(originFile);FileOutputStream fileOutputStream = new FileOutputStream(outFile);int j = 0;while ((j = inputStream.read()) != -1) {fileOutputStream.write(j);}File file = new File(originFile);Image src = javax.imageio.ImageIO.read(file);BufferedImage thumbImage = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);//添加蒙版Graphics2D g = thumbImage.createGraphics();//设置透明背景thumbImage = g.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);g.dispose();g = thumbImage.createGraphics();//设置透明背景结束//将图片和蒙版合成BufferedImage bufferedImage = ImageIO.read(file);g.drawImage(src.getScaledInstance(bufferedImage.getWidth(), bufferedImage.getHeight(), Image.SCALE_SMOOTH), (width-src.getWidth(null))/2, (height-src.getHeight(null))/2, null);//将合成后的图片下载到本地BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(outFile));String formatName = outFile.substring(outFile.lastIndexOf(".") + 1);ImageIO.write(thumbImage, /*"GIF"*/ formatName /* format desired */, new File(outFile) /* target */);out.close();file.delete();ImgHandleResult imgHandleResult = new ImgHandleResult();imgHandleResult.setImageSrc(outFile);imgHandleResult.setImageWidth(width);imgHandleResult.setImageHeight(height);return imgHandleResult;}

处理图片固定返回类

/*** 图片处理后的结果* @author micktiger**/
@Data
public class ImgHandleResult {//原图private String imageSrcOriginal;//处理后的图片宽高private String imageSrc;private int imageWidth;private int imageHeight;private BigDecimal imageSize;//压缩private String thumbSrc;private BigDecimal thumbSize;private int thumbWidth;private int thumbHeight;//处理的其他图片private List<ImgHandleResult> imgHandleResultList = new ArrayList<>();
}

参考链接:设置透明图

https://blog.csdn.net/gingerredjade/article/details/53193014?spm=1001.2101.3001.6650.6&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-6.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-6.pc_relevant_paycolumn_v3&utm_relevant_index=12

图片裁剪,合成(设置透明背景)相关推荐

  1. 将base64图片旋转90度,将图片格式化(保持透明背景)

    js将图片旋转90度 function rotateBase64Img(src, edg) {var canvas = document.createElement("canvas" ...

  2. vue 背景透明度_Visual Studio 2017 设置透明背景图

    一.前言 给大家分享一下,如何为VS2017设置透明背景图.下面是一张设置前和设置后的图片. 设置前: 设置后: 二.设置背景图片的扩展程序 我们打开VS的扩展安装界面:[工具]->[扩展和更新 ...

  3. Visual Studio 2019 设置透明背景图(傻瓜式教学)

    Visual Studio 2019 设置透明背景图 一.前言 二.设置背景图片的扩展程序 三.编辑主题 一.前言 给大家分享一下,如何为VS2019设置透明背景图.下面是一张设置后的图片. 二.设置 ...

  4. notepad设置背景颜色_Word2017中如何设置透明背景图和取消背景图

    如何在Word2017中设置透明背景图 1.打开Word文档 2.选择"插入"-"形状",选择并绘制你所需要的背景图形状 3.选中所绘的形状,点击右键,选择&q ...

  5. VSCode设置透明背景,解决透明度导致全局字体模糊问题

    VSCode 设置透明背景,解决透明度的问题 但这个方法有点个缺点,就是透明度的问题,照片透明度越高,那么字体的透明度也高,导致代码或者菜单选项看不清 网上找到的大多数教程都是使用这个方法 /*bac ...

  6. R可视化包ggplot2设置透明背景实战

    R可视化包ggplot2设置透明背景实战 目录 R可视化包ggplot2设置透明背景实战 #ggplot2设置透明背景语法 #ggplot2绘图

  7. 透明怎么弄_最新版微信如何设置透明背景?这样设置,效果令人惊喜

    微信叒更新了,你的微信有更新吗?听说这次更新是安卓端的先更新,苹果端的还不能更新.今天小编要跟大家分享的是新版微信应该如何设置透明背景,不清楚微信透明背景长什么样子的?没关系,给你看看设置透明背景之后 ...

  8. H5移动端记一次图片裁剪合成功能

    之前做了一个h5项目,核心功能是上传图片,进行裁剪后与其他页面部分合成到一个图片作为海报进行保存.实际做出来的功能如下所示,这里我是用pc浏览器的移动端页面模拟进行录制的,实际上在手机上的效果会更好一 ...

  9. JAVA编写的纯色背景图片去除底色变成透明背景图片的工具

    程序使用java语言编写,工作原理是取图片边缘的像素点作为要替换的背景色,然后将所有像素点与该颜色进行比较,发现相同则将颜色不透明度设置为0,使颜色完全透明. 在线示例: 一.访问图片去底工具BgRe ...

  10. android自定义透明圆形,Android给TextView设置透明背景、圆角边框

    第一种方法:在drawable文件夹下新建一个文件设置背景样式 代码: 在drawable文件夹下面新建text_view_border.xml <?xml version="1.0& ...

最新文章

  1. 机器模拟共情,情感AI正踏足诸多行业
  2. Android开发之自定义Dialog二次打开报错问题解决
  3. 使用.htaccess删除.html扩展名_Visual Studio Code | 从下载安装到使用!
  4. ginkgo测试介绍
  5. CPU芯片哪家强?电视处理器这么选就对了!
  6. Java8基础之反射
  7. 信息学奥赛一本通 1128:图像模糊处理 | OpenJudge NOI 1.8 13:图像模糊处理
  8. Java构造时成员初始化的陷阱
  9. postgres 命令行建数据库表_PostgreSQL学习笔记(1)之模板数据库
  10. JGrid有用的收藏
  11. 121 项目 008 笔记向 maven-study 常用插件
  12. mc1.8.1怎么局域网java_同一台电脑同时装jdk1.8和jdk1.7
  13. vim php 配置文件,spacevimsetting
  14. Ucient、Netdraw的安装与使用-----分析人物间的关系和重要性
  15. 软考论文写作攻略,让你轻松拿高分!
  16. 文件包含小总结 By Assassin
  17. 有关time的一系列python使用方法
  18. php使用addons,GitHub - yuninf/tp5-addons: ThinkPHP addons autoload
  19. 2010最新高分大片《盗梦空间》DVD中英双字
  20. java new date 减一天_java日期增加一个月或减少一天

热门文章

  1. mac取消开机启动项
  2. 激光打印机与计算机相连,Hp laserjet1010打印机怎么连接电脑使用?
  3. deepface使用
  4. ubuntu18.04配置静态ip和动态ip
  5. 外贸建站需要注意的地方
  6. 【Adobe Premiere Pro 2020】ps图稿导出到pr创建运动图形、pr音频录制与音频效果使用说明、pr导出为mp4格式及参数设置说明【包含其他几种常见格式】、pr去水印的4种方法说明
  7. 计算机光盘无法格式化,求助,我的电脑无法格式化DVD光盘,提示为“windows无法完成格式化“。求高手。...
  8. go语言爬虫 - TapTap用户都喜欢些什么游戏
  9. mac根目录无法新建文件夹
  10. 学生用计算机方着怎么计,科学计算器使用