阿里图片合成接口拼接

43 篇文章 1 订阅

上篇博客我写了把两张图片合成为一张图片。
那样的合成方式是可以的,也是可以合成成功的。但是这样的合成方式有些许不足
1、合成的图片除非服务器端给配置的图片考虑到了不同设备的分辨率的情况,这对不同的设备给了不同的图,如果不是这样,生成的图片放在不同的设备上有不同程度的拉伸问题。
2、如果两张图片都是服务器端给的url,那么我们需要使用图片下载工具,对两张图片分别下载。代码量非常多。

研究了好久,发现阿里云给我们提供了非常便捷的图片方式。大致原理是将两个url合称为一个url,这个url就是我们最终所需要的那个图片的url,我们只需要下载一个图片来用就可以了。

效果:在这里插入图片描述

其中一张图片
在这里插入图片描述

需要将下面那个底图和一张二维码图片合成为一张图片。

阿里云的文档参照 :https://helpcdn.aliyun.com/document_detail/44957.html?spm=a2c4g.11186623.4.4.cd4b35a8uhEMdn#h2-url-2 阿里云将两张图片合成的逻辑在这里展示的是添加水印的方法。
在这里我将二维码当做水印图片。

但是这个文档并没有oc的代码,不要紧,我来解释一下,这个文档的本质就是接口拼接,这个规则都在这个文档中。

我再oc 的角度解释一下。以文档中的那个连接说明一下:
http://image-demo.img-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_400/watermark,image_cGFuZGEucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMzA,t_90,g_se,x_10,y_10

在这里插入图片描述

来看这里我解释一下。这里可能是他这个底图的分辨率是400的宽,在这里写明了,当然这里可以不做任何显示将w_400去掉,但是请注意接口拼接w_400只是value,也需要将resize去掉,你可以试一下去掉之后是这样的http://image-demo.img-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/watermark,image_cGFuZGEucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMzA,x_100,y_100。

你看到中间有一堆代码不认识,不要紧,它是将那个“水印”图片进行了Base64的加密。在这里我提供一个base64加密的链接https://blog.csdn.net/mr_raptor/article/details/50806657 经我验证,这个链接中提供的内容是可用的。这个链接中有一个第三方库。注意在这里插入图片描述
这个第三方库在git上可以正常下载,我们只需要使用这个库里面的关于base64加密的那三个文件夹即可。在用到的地方导入头文件。在这里插入图片描述

请注意,关于这个功能我们暂时只用到了编码的方法,解码的方法没有用到。

这个水印的链接,我们只看到了panda.png 注意这不是一个本地的图片,这也是一个图片的url,但是我们在编码时需要将url前面那一堆的去掉,注意应该是保留**.com/**的所有文本,实际上他的全部链接为http://image-demo.img-cn-hangzhou.aliyuncs.com/panda.png。

这个链接最后 x_100 y_100 表示水印位置在底图上的位置。关于这些参数的用法,请您参照文档中的在这里插入图片描述

我这个截图只是个栗子,这里面提供了很多参数,诸位看明白了再用。

这是我的代码,仅提供参考

NSString * qrStr = [data.qrCode URLDecodedString];
                        qrStr = [[qrStr componentsSeparatedByString:@".com/"] lastObject];
                        qrStr = [NSString stringWithFormat:@"%@?x-oss-process=image/resize,w_280",qrStr];
                        //base64编码
                        qrStr = [NSString safeUrlBase64Encode:qrStr];
                        NSString * bottomImageUrl = dataSuper.shareImg.imgLink;
                        NSString * shareImageUrl = [NSString stringWithFormat:@"%@?x-oss-process=image/watermark,image_%@,t_90,g_south,y_176",bottomImageUrl,qrStr];

这里我们队url进行了url编码,如果您的服务器没有做url编码操作,可以不看第一句代码。

如果您没有展示出效果来,这是阿里云提供的错误文档可以参照
https://error-center.aliyun.com/status/product/Oss

阿里云的这个功能很神奇。
欢迎大家使用。

我是磊怀 2849765859 这是我的qq,欢迎您联系我。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值