利用OSS参数对图片文字进行合成生成海报相关

官方文档是相关全活:

图片处理参数

更新时间:2020-10-26 11:37

我的收藏

需要注意方面:

  1. 文字水印长度不可超过21个汉字,超过打开链接会报错

  2. 水印图片支持二次处理(panda.png?x-oss-process=image/resize,P_30)

    图片.png

    如何缩放图片_对象存储(OSS)-阿里云帮助中心

  3. 设置图片、文本定位

    图片.png

    图片.png

  4. base64编辑三个特殊处理的字符

    1. 将结果中的加号(+)替换成短划线(-)。

    2. 将结果中的正斜线(/)替换成下划线(_)。

    3. 将结果中尾部的等号(=)省略。

    4. 1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      /**

       * OSSbase64特殊处理

       * @param $str

       * @return string|string[]

       * @author: luwc

       * @Time: 2021/11/16 15:38

       */

      private static function ossBase64($str){

          return str_replace(['+','/','='],['-','_',''],base64_encode($str));

      }

例子:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

$qr_base64_path = self::ossBase64($image_path '?x-oss-process=image/resize,w_272');

$domain = \Yii::$app->params['oss']['domain'];

// https://image-demo-oss-zhangjiakou.oss-cn-zhangjiakou.aliyuncs.com/example.jpg

//?x-oss-process=image/watermark,

//   image_cGljcy9KZWxseWZpc2guanBnP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMjA,g_nw,x_10,y_10

//  /watermark,image_cGljcy9Lb2FsYS5qcGc_eC1vc3MtcHJvY2Vzcz1pbWFnZS9yZXNpemUsUF8yMA,g_se,x_10,y_10

/// /watermark,image_cGljcy9UdWxpcHMuanBnP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMjA,g_west,x_10,y_10

/// /watermark,text_V2F0ZXJtYXJrIDE,size_20,g_ne,x_10,y_200

/// /watermark,text_V2F0ZXJtYXJrIDI,color_0000b7,size_20,g_sw,x_100,y_50

$code = self::ossBase64("编号:{$option['code']}");

$logo = self::ossBase64(str_replace($domain '/'''$option['logo']) . '?x-oss-process=image/resize,w_620,h_620,m_pad');

$names = mb_str_split($option['name'], 12);

//        $name = self::ossBase64(StringHelper::truncate($option['name'], 20));

$posterUrl $share_setting['poster'] . "?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,size_56,text_{$code},color_FFFFFF,g_north,y_1244";

$posterUrl .= "/watermark,image_{$logo},g_north,y_294";

$h = 976;

foreach ($names as $name) {

    $name = self::ossBase64(StringHelper::truncate($name, 20));

    $posterUrl .= "/watermark,type_ZmFuZ3poZW5naGVpdGk,text_{$name},size_64,color_FFFFFF,g_north,y_{$h}";

    $h += 76;

}

$posterUrl .= "/watermark,image_{$qr_base64_path},g_sw,x_404,y_166";

xxxxx/202111/16/20211116142612747938529946.1637043972-716907096.png

?x-oss-process=image

/watermark,type_ZmFuZ3poZW5naGVpdGk,size_28,text_57yW5Y-377yaMDAxOQ,color_FFFFFF,g_north,y_166/watermark,image_aHVhdGFuZy8yMDIxMDUvMjcvMjAyMTA1MjcwOTU3NDYyMDAzNTI1ODU1NTkuMTYyMjA4MDY2Ni0zMTI1OTcxNjUuanBlZz94LW9zcy1wcm9jZXNzPWltYWdlL3Jlc2l6ZSx3XzE2MCxoXzE2MCxtX2xmaXQ,g_nw,x_190,y_238/watermark,type_ZmFuZ3poZW5naGVpdGk,text_5LyB5Lia5LiK5biC5LyB5Lia5LyB5Lia5LyB5Lia5LyB5Lia5LyB5Lia5LyB5Lia5LyB5Lia5LyB5LiaLi4u,size_32,color_FFFFFF,g_north,y_428/watermark,image_aHVhdGFuZy9xcnRtcC92b3RlLzI0LzIwMjExMTE2MTYwODEyNjkwODI4Njk0Mjk4LnBuZz94LW9zcy1wcm9jZXNzPWltYWdlL3Jlc2l6ZSx3XzE2MA,g_sw,x_190,y_108

  • 13
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Spring Boot和阿里云的OSS(对象存储服务)来存储图片。以下是实现步骤: 1. 集成OSS SDK 首先,需要在pom.xml文件中添加OSS SDK依赖: ``` <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>2.9.2</version> </dependency> ``` 2. 配置OSS连接信息 在application.properties文件中添加OSS的连接信息: ``` oss.endpoint=your_endpoint oss.accessKeyId=your_access_key_id oss.accessKeySecret=your_access_key_secret oss.bucketName=your_bucket_name ``` 3. 创建OSS客户端 在代码中创建OSS客户端: ``` @Configuration public class OSSConfig { @Autowired private Environment env; @Bean public OSSClient ossClient() { String endpoint = env.getProperty("oss.endpoint"); String accessKeyId = env.getProperty("oss.accessKeyId"); String accessKeySecret = env.getProperty("oss.accessKeySecret"); return new OSSClient(endpoint, accessKeyId, accessKeySecret); } } ``` 4. 上传图片 在代码中使用OSS客户端上传图片: ``` @Service public class ImageService { @Autowired private OSSClient ossClient; public String uploadImage(MultipartFile file) throws IOException { String bucketName = env.getProperty("oss.bucketName"); String fileName = file.getOriginalFilename(); InputStream inputStream = file.getInputStream(); ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentType(file.getContentType()); metadata.setContentLength(file.getSize()); ossClient.putObject(bucketName, fileName, inputStream, metadata); return fileName; } } ``` 这里使用MultipartFile对象来接收上传的图片,然后将其转换为InputStream,使用OSSClient的putObject方法上传到OSS中,返回上传后的文件名。 以上就是利用Spring Boot和OSS存储图片的步骤,希望对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值