package com.ciip.cloud.core.market.util;import sun.misc.BASE64Encoder;/*** Title: WaterMarkUtils* Description: 阿里云Oss水印图片处理** @author jt* @created 2020/4/9 11:36*/public class WaterMarkUtils {public static String thumbnail = "?x-oss-process=image/resize,p_50";/*** 图片水印** @return 返回值*/public static String addImageWaterMark(){//水印图片为当前的Bucket下图片,直接针对图片名称进行base64编码。(水印图片地址,存在OSS中)String imagePathStr = "ciipResoruce/watermark/wm.png?x-oss-process=image/resize,P_80";String encodeBase64 = new BASE64Encoder().encode(imagePathStr.getBytes());String safeBase64Str = encodeBase64.replace('+', '-');safeBase64Str = safeBase64Str.replace('/', '_');safeBase64Str = safeBase64Str.replaceAll("=", "");String waterMark = "?x-oss-process=image/resize,w_4000/watermark,image_"+safeBase64Str+",g_center";return waterMark;}/*** 文字水印** @return 返回值*/public static String addTextWaterMark(String text,String planName,String time,String code){String textBase64 = new BASE64Encoder().encode(text.getBytes(Charset.forName("utf8")));String textBase64Str = textBase64.replace('+', '-');textBase64Str = textBase64Str.replace('/', '_');textBase64Str = textBase64Str.replaceAll("=", "");String planNameBase64 = new BASE64Encoder().encode(planName.getBytes(Charset.forName("utf8")));String planNameBase64Str = planNameBase64.replace('+', '-');planNameBase64Str = planNameBase64Str.replace('/', '_');planNameBase64Str = planNameBase64Str.replaceAll("=", "");String timeBase64 = new BASE64Encoder().encode(time.getBytes(Charset.forName("utf8")));String timeBase64Str = timeBase64.replace('+', '-');timeBase64Str = timeBase64Str.replace('/', '_');timeBase64Str = timeBase64Str.replaceAll("=", "");String codeBase64 = new BASE64Encoder().encode(code.getBytes(Charset.forName("utf8")));String codeBase64Str = codeBase64.replace('+', '-');codeBase64Str = codeBase64Str.replace('/', '_');codeBase64Str = codeBase64Str.replaceAll("=", "");String waterMark = "?x-oss-process=image/resize,w_450,h_640/watermark,type_d3F5LW1pY3JvaGVp,size_22,text_"+textBase64Str+",color_333333,t_100,g_north,y_230/watermark,type_d3F5LW1pY3JvaGVp,size_20,text_"+planNameBase64Str+",color_000000,t_100,g_north,y_260/watermark,type_d3F5LW1pY3JvaGVp,size_12,text_"+timeBase64Str+",color_333333,t_100,g_sw,x_48,y_240/watermark,type_d3F5LW1pY3JvaGVp,size_12,text_"+codeBase64Str+",color_333333,t_100,g_sw,x_48,y_220";return waterMark;}}

图片水印使用方法:

 CiipFileResources ciipFileResourcesA = JSON.parseObject(ciipCertification.getCertificatesPhotoJsonA(),CiipFileResources.class);ciipFileResourcesA.setId(null);ciipFileResourcesA.setCreateDate(new Date());//创建时间ciipFileResourcesA.setFileResourceType(CiipFileResourceType.REALNAME_CERTIFICATE);//实名认证:证件照片//缩略图ciipFileResourcesA.setThumbnail(ciipFileResourcesA.getFileShowUrl() + WaterMarkUtils.thumbnail);//水印处理过图片ciipFileResourcesA.setWatermark(ciipFileResourcesA.getFileShowUrl() + WaterMarkUtils.addImageWaterMark());ciipFileResourcesService.save(ciipFileResourcesA);

文字水印使用方法:

 /*** 证书签名:从计划中获取证书,签名后,存入合作伙伴中* ** @param planId   计划id* @param recordId 合作伙伴记录id* @return 返回值*/public void certificateSignName(Long planId, Long recordId) {//根据计划id,获取计划信息CooperationPlan plan = cooperationPlanRepository.findById(planId).orElse(null);CooperationRecord record = cooperationRecordRepository.findById(recordId).orElse(null);if (null != plan && null != record) {//个人if (record.getCreateUserRole().equals(CIIPCommonConstant.SELECT_ROLE_TYPE.CIIP_PERSON)) {//从Redis中获取,个人用户信息Object userListObj = cacheUtil.getCache(CacheConstant.CIIP_USER_LOGO_LIST_PERSON.CACHE_NAME, CacheConstant.CIIP_USER_LOGO_LIST_PERSON.UUID + CacheConstant.CIIP_USER_LOGO_LIST_PERSON.CACHE_PARAM);List<UserLogoVO> userLogoVoList = JSON.parseArray(JSON.toJSONString(userListObj), UserLogoVO.class);userLogoVoList.forEach(item -> {if (record.getPersonalUser().equals(item.getId())) {record.setCreateUserName(item.getName());}});}//企业if (record.getCreateUserRole().equals(CIIPCommonConstant.SELECT_ROLE_TYPE.CIIP_ENTERPRISE) || record.getCreateUserRole().equals(CIIPCommonConstant.SELECT_ROLE_TYPE.CIIP_AGENCY)) {//从Redis中获取,个人用户信息Object userListObj = cacheUtil.getCache(CacheConstant.CIIP_USER_LOGO_LIST_COMPANY.CACHE_NAME, CacheConstant.CIIP_USER_LOGO_LIST_COMPANY.UUID + CacheConstant.CIIP_USER_LOGO_LIST_COMPANY.CACHE_PARAM);List<UserLogoVO> userLogoVoList = JSON.parseArray(JSON.toJSONString(userListObj), UserLogoVO.class);userLogoVoList.forEach(item -> {if (record.getEnterpriseUser().equals(item.getId())) {record.setCreateUserName(item.getCompanyName());}});}//签名if (null != plan.getPlanCertificate()) {String certificateUrl = plan.getPlanCertificate().getFileShowUrl();String authorizationTime = "授权期限:" + DateUtil.format(record.getExaminePassTime(), "yyyy年MM月dd日") + "-" + DateUtil.format(record.getExamineFailureTime(), "yyyy年MM月dd日");List<CooperationRecord> list = new ArrayList<>();plan.getCooperationRecords().forEach(item -> {//表示已审核通过if (item.getExamineStatus().name().equals(CooperationExamineStatus.AUDITED.name())) {list.add(item);}});String code = "";if (list.size() > 0) {if (String.valueOf(list.size()).length() == 2) {code = "00" + String.valueOf(list.size()+1);}if (String.valueOf(list.size()).length() == 1) {code = "000" + String.valueOf(list.size()+1);}if (String.valueOf(list.size()).length() == 3) {code = "0" + String.valueOf(list.size()+1);}if (String.valueOf(list.size()).length() == 4) {code = String.valueOf(list.size()+1);}} else {code = "0001";}//合作伙伴计划名称拼音首字母+审核通过日期(年后两位+月+日)+该计划第几个伙伴(共四位),例:CIIPHZHB2004070020String certificateCode = "证书编号:" + PinYinUtil.getFirstSpell(plan.getPlanName()).toUpperCase() + DateUtil.format(record.getExaminePassTime(), "yyMMdd") + code;//添加水印,给证书上签名record.setPlanCertificateUrl(certificateUrl + WaterMarkUtils.addTextWaterMark(record.getCreateUserName(), "为" + plan.getPlanName(), authorizationTime, certificateCode));}cooperationRecordRepository.save(record);}}

阿里云Oss水印图片处理Utils相关推荐

  1. 最详细PicGo(图床)加阿里云OSS实现图片自动上传

    最详细PicGo加阿里云OSS实现图片自动上传 前言 使用Typora这款markdown编辑器时,导入的图片是本地链接,在进行资源共享时,就会出现图片无法显示问题,为了将相对路径转为绝对路径,就必须 ...

  2. 使用阿里云OSS实现图片上传案例

    文章目录 前言 一.OSS是什么? 二.使用步骤 1.开通OSS服务 2.创建bucket 3.创建子账户 4.查看帮助文档,编写后端代码 5.layui前端 总结 前言 在正式的开发环境中,类似图片 ...

  3. Typora + Picgo + 阿里云oss实现图片上传

    Typora + Picgo + 阿里云oss实现图片上传 设置原因 Typora是一款markdown文本编辑器,无法承载本地图片存储的功能,书写好的文章上传到博客或其他设备上时会导致图片丢失,无法 ...

  4. 阿里云 OSS 之图片处理

    OSS Object Storage Service: 海量.安全.低成本.高可靠的云存储服务. 图片处理服务 阿里云 OSS 图片处理服务 (Image Processing,简称 IMG), 将原 ...

  5. 七牛云和阿里云OSS存储图片服务器使用

    目录 1 图片存储方案 1.1 介绍 1.2 七牛云存储 1.2.1 注册.登录 1.2.2 新建存储空间 1.2.3 查看存储空间信息 1.2.4 开发者中心 1.2.5 鉴权 1.2.6 Java ...

  6. Typora+PicGo+阿里云OSS实现图片上传功能

    烦恼 Typora是最好用的markdown语法的工具之一:平时做笔记都是使用这个工具,免费,简洁好用,用上之后就爱上了.但是它默认图片是放在本地的.为了用好这个工具,也是经历了一打怪之旅. 开始不做 ...

  7. 记录vue+饿了么整合阿里云oss 实现图片上传保存到MySQL 前台回显

    vue代码 查看图片 上一张下一张前后切换图片的实现 <el-table-column label="头像" width="100" align=&quo ...

  8. 解决:PHP 阿里云OSS访问图片地址默认下载而不是在线预览

    修改文件--保存后再上传图片就可以在线预览了 将阿里云图片属性改为"image/jpg" 也可直接替换下方文件,已经是修改后的了,新上传的图片则不会出现不可在线预览了 image/ ...

  9. 【探花交友】阿里云OSS、百度人脸识别

    文章目录 1.完善用户信息 1.1.阿里云OSS 1.2.百度人脸识别 1.完善用户信息 用户在首次登录时需要完善个人信息,包括性别.昵称.生日.城市.头像等.其中,头像数据需要做图片上传,这里采用阿 ...

  10. 阿里云OSS转移至七牛云存储(详细简洁教程)

    阿里云OSS转移至七牛云存储 只需五步,将阿里云OSS的图片转移到七牛云 七牛云官方提供了工具和详细文档,文字比较多也比较详细,下面写一下简洁一点的 第一步:下载数据迁移工具(kodoimport) ...

最新文章

  1. 中国700万程序员不够用怎么办?我们去问了北大谢涛,顶会ASE最有影响力论文奖首批华人得主...
  2. 用什么擦地最干净脑筋急转弯_脑筋急转弯:手机的反义词是什么?答案让人笑得肚子疼!...
  3. ubuntu远程登陆windows
  4. idea package自动生成_懒人必备,IntelliJ IDEA中代码一键生成
  5. JavaScript学习(八十九)—数组练习题
  6. Java学习笔记(05)
  7. ESP32-CAM + micropython学习笔记
  8. [Python从零到壹] 十七.可视化分析之Matplotlib、Pandas、Echarts入门万字详解
  9. 工作簿中工作表内容批量提取
  10. 微乐服务器升级维护需要多久,微信系统升级要多久?微信系统维护一般要多久?...
  11. 如何开发出一款直播APP项目实践篇 -【原理篇】
  12. 单利 java_JAVA中的单利
  13. Linux网卡丢包分类整理(1)——网卡篇
  14. 第二章 五行,金木水火土
  15. GM8913型DC平衡双向控制器LVTTL转FPD-LINK
  16. marvell raid linux,MARVELL RAID管理软件操作演示
  17. linux汇编编译器:GAS和NASM的比较
  18. 如何在IPad上优雅地看移动硬盘中的视频
  19. p2p下载器是什么?
  20. 破解 MySQL5.7 数据库的 root 登录密码

热门文章

  1. 留德APS审核 - 计算机科学与技术 - 2020北京英语审核 (一审通过)
  2. QQ群反向昵称、恶搞昵称的原理
  3. 【CodeForces 697C】Lorenzo Von Matterhorn(LCA)
  4. Qt 网络聊天室项目
  5. Dagum Gini Decomposition,Dagum基尼系数分解的python实例
  6. JAVA拳皇jar_拳皇(Java简单的小程序)源码示例
  7. 设计模式二 单例模式
  8. ssm+boot+thymeleaf博客系统完成总结
  9. Intel编译器安装WRF-CMAQ
  10. 凭什么国内造不出高端示波器?一起扒一扒示波器的发展史!