API 文档

SDK 文档

诚邀爱技术、爱分享的你,成为文档内容共建者> HOT

简介

数据万象提供两种方式进行图片处理:图片自适应处理和 CloudInfinite 模块处理。

图片自适应处理

图片自适应处理包括了格式转换(根据系统版本自动变换格式)和裁剪(根据图片控件尺寸裁剪),相关说明如下。

  1. 自适应加载 CIResponsiveTransformation。
  2. 根据当前 imageView 控件尺寸自动调整图片大小。
  3. 根据系统版本自动调整最优图片格式,iOS 11以下加载原格式,iOS 11及以上加载 HEIC 格式。
    CIResponsiveTransformation * sTransform = [[CIResponsiveTransformation alloc]initWithView:imageView 
                                                                                        scaleType:ScaleTypeAUTOFit]

CloudInfinite 模块处理

CloudInfinite 模块中的 CITransformation 类封装了数据万象的基础图片处理功能,其中包含如下功能:

在使用数据万象基础图片处理功能时首先实例化 CITransformation 类,下面所有操作一致,不再重复说明。
Objective-C

CITransformation * transform = [CITransformation new];
swift
let transform = CITransformation();

缩放

说明:

API 文档请参见 缩放功能接口

按百分比缩放

Objective-C

// 以缩放百分之50为例
[transform setZoomWithPercent:50 scaleType:ScalePercentTypeALL];

// scaleType 可以指定如下类型:
    // 仅缩放宽度,高度不变
    ScalePercentTypeOnlyWidth = 1, 
    // 仅缩放高度,宽度不变
    ScalePercentTypeOnlyHeight,
    //指定图片的宽高同时缩放
    ScalePercentTypeALL,
swift
transform.setZoomWithPercent(50, scale: ScalePercentType.ALL)

指定宽高缩放

Objective-C

// 以宽高都指定为100 并且缩放类型为 ScaleTypeAUTOFit 等比缩放
[transform setZoomWithWidth:100 height:100 scaleType:ScaleTypeAUTOFit];

// 在指定宽高缩放时,scaleType 可以指定的类型:
    // 忽略原图宽高比例,指定图片宽度为 Width,高度为 Height ,强行缩放图片,可能导致目标图片变形
    ScaleTypeAUTOFill = 1,

    // 限定缩略图的宽度和高度的最大值分别为 Width 和 Height,进行等比缩放
    ScaleTypeAUTOFit,

    // 限定缩略图的宽度和高度的最小值分别为 Width 和 Height,进行等比缩放
    ScaleTypeAUTOFITWithMin,

    // 指定目标图片宽度为 Width,高度传入0, 高度等比压缩
    ScaleTypeOnlyWidth,

    // 指定目标图片高度为 Height,宽度传0,宽度等比压缩
    ScaleTypeOnlyHeight
swift
transform.setZoomWithWidth(10, height: 100, scaleType: ScaleType.autoFit)

等比缩放

限制像素缩放,缩放后的图像,总像素数量不超过指定数量。

Objective-C

// 缩放后的图像,总像素数量不超过1000 为例;
[transform setZoomWithArea:1000]; 
swift
transform.setZoomWithArea(1000)

裁剪

说明:

API 文档请参见 裁剪功能接口

普通裁剪

Objective-C

// 指定目标图片宽度、高度、相对于图片左上顶点水平向右偏移、相对于图片左上顶点水平向下偏移进行裁剪为例;
[transform setCutWithWidth:100 height:100 dx:30 dy:30];
swift
transform.setCutWithWidth(100, height: 100, dx: 30, dy: 30)

内切圆裁剪

radius 是内切圆的半径,取值范围为大于0且小于原图最小边一半的整数。内切圆的圆心为图片的中心。图片格式为 gif 时,不支持该参数。
Objective-C

// 指定半径100为例
[transform setCutWithIRadius:100];
swift
transform.setCutWithIRadius(100)

圆角裁剪

radius 为图片圆角边缘的半径,取值范围为大于0且小于原图最小边一半的整数。圆角与原图边缘相切。图片格式为 gif 时,不支持该参数。
Objective-C

// 指定圆角半径100为例
[transform setCutWithRRadius:100];
swift
transform.setCutWithRRadius(100)

缩放裁剪

说明:

方位图说明,请参见 gravity 介绍

Objective-C

// 指定宽高缩放裁剪,如果为0则不变;
[transform setCutWithCrop:100 height:100];

// 指定宽高以及 gravity 缩放裁剪;
[transform setCutWithCrop:100 height:100 gravity:CIGravityCenter];
swift
transform.setCutWithCrop(100, height: 100)
transform.setCutWithCrop(100, height: 100, gravity: CloudInfiniteGravity.CIGravityCenter);

人脸智能裁剪

基于图片中的人脸位置进行缩放裁剪。目标图片的宽度为 Width、高度为 Height。
Objective-C

// 裁剪人脸并宽高指定100缩放为例;
[transform setCutWithScrop:100 height:100];
swift
transform.setCutWithScrop(100, height: 100)

旋转

说明:

API 文档请参见 旋转功能接口

普通旋转

图片顺时针旋转角度,取值范围0 - 360 ,默认不旋转。
Objective-C

// 以旋转45度为例;
[transform setRotateWith:45];
swift
transform.setRotateWith(45)

自适应旋转

根据原图 EXIF 信息将图片自适应旋转回正。
Objective-C

[transform setRotateAutoOrient];
swift
transform.setRotateAutoOrient()

格式转换

说明:

API 文档请参见 格式转换接口

格式转换

目标缩略图的图片格式可为:TPG,JPG,BMP,GIF,PNG,HEIC,WEBP,YJPEG,AVIF 等,其中 YJPEG 为数据万象针对 JPEG 格式进行的优化,本质为 JPG 格式;缺省为原图格式。

Objective-C

// 以转换为 JPG 为例
[transform setFormatWith:CIImageTypeJPG];

// 指定传参方式:
[transform setFormatWith:CIImageTypeTPG options:CILoadTypeUrlFooter];
swift
transform.setFormatWith(CIImageFormat.typeJPG);
transform.setFormatWith(CIImageFormat.typeJPG, options: CILoadTypeEnum.urlFooter);
CILoadTypeEnum
// 加载类型 方式一:带 accept 头部 accept:image/ ***
CILoadTypeAcceptHeader = 0,

// 加载类型 方式二:在 url 后面中拼接 imageMogr2/format/ ***
// 如果需要方式二,则使用该值;不传默认为第一种方式
CILoadTypeUrlFooter,

说明:

  • 使用 HEIC 格式,需要在 iOS11及以上;不支持 GIF 格式图片转为 HEIC。
  • 当指定为 CILoadTypeAcceptHeader 方式传参时,并且组合了其他的转换则 header 失效,并且在 sdk 内部自动转换为 footer 的方式。
  • 在使用图片格式转换时,如果需要转为 TPG 格式,则需要依赖 CloudInfinite/TPG 模块。
  • 在使用图片格式转换时,如果需要转为 AVIF 格式,则需要依赖 CloudInfinite/AVIF 模块。
  • 在使用图片格式转换时,如果需要转为WEBP格式,则需要依赖 SDWebImageWebPCoder 库。

pod 'CloudInfinite/TPG'

pod 'CloudInfinite/AVIF'

gif 格式优化

只针对原图为 GIF 格式,对 GIF 图片格式进行的优化,降帧降颜色。

FrameNumber=1,则按照默认帧数30处理,如果图片帧数大于该帧数则截取。
FrameNumber 取值( 1,100 ],则将图片压缩到指定帧数 (FrameNumber)。

Objective-C

[transform setCgif:50];
swift
transform.setCgif(50)

输出渐进式 JPG 格式

Mode 可为0或1。0表示不开启渐进式;1表示开启渐进式。该参数仅在输出图片格式为 JPG 格式时有效。如果输出非 JPG 图片格式,会忽略该参数,默认值0。

Objective

[transform setInterlace:YES];
swift
transform.setInterlace(true)

质量变换

调节图片质量,API 文档请参见 质量变换接口

Objective-C

// 以图片的绝对质量变换以60为例
// type 为变换类型,下面具体介绍
[transform setQualityWithQuality:60 type:CIQualityChangeAbsolute];
swift
transform.setQualityWithQuality(60, type: CIQualityChangeEnum.absolute)
数据万象提供三种变换类型:绝对变换、相对变换、最低质量变换,其中绝对变换分为强制指定和不指定两种,如下:
// 图片的绝对质量,取值范围0 - 100 ,默认值为原图质量;
CIQualityChangeAbsolute = 1,

// 图片的绝对质量,取值范围0 - 100 ,强制使用指定值,例如:90!。
CIQualityChangeAbsoluteFix,

// 图片的相对质量,取值范围0 - 100 ,数值以原图质量为标准。例如原图质量为80,将 rquality 设置为80后,得到处理结果图的图片质量为6480x80%)
CIQualityChangeRelative,

// 图片的最低质量,取值范围0 - 100 ,设置结果图的质量参数最小值。
// 例如原图质量为85,将 lquality 设置为80后,处理结果图的图片质量为85// 例如原图质量为60,将 lquality 设置为80后,处理结果图的图片质量会被提升至80。
CIQualityChangeLowest,

说明:

仅适用于 JPG、WEBP 格式的图片。

高斯模糊

高斯模糊功能,模糊半径,取值范围为1 - 50;正态分布的标准差,必须大于0。API 文档请参见 高斯模糊接口

Objective-C

// 模糊半径20,正态分布的标准差以20为例
[transform setBlurRadius:20 sigma:20];
swift
transform.setBlurRadius(20, sigma: 20)

说明:

图片格式为 GIF 时,不支持该操作。

锐化

图片锐化功能,value 为锐化参数值,取值范围为10 - 300间的整数,推荐使用70。参数值越大,锐化效果越明显。API 文档请参见 锐化接口

Objective-C

// 以锐化值100为例
[transform setSharpenWith:100];
swift
transform.setSharpenWith(100)

水印

说明:

图片水印

Objective-C

//imageUrl 水印图片地址
// gravity 文字水印位置,九宫格位置(参考九宫格方位图 ),默认值 SouthEast
// dx 水平(横轴)边距,单位为像素,缺省值为0
// dy 垂直(纵轴)边距,单位为像素,默认值为0
// blogo 水印图适配功能,适用于水印图尺寸过大的场景(如水印墙)。共有两种类型:
///    当 blogo 设置为1时,水印图会被缩放至与原图相似大小后添加
///    当 blogo 设置为2时,水印图会被直接裁剪至与原图相似大小后添加
[tran setWaterMarkWithImageUrl:@"http://tpg-1253653367.cos.ap-guangzhou.myqcloud.com/google.jpg" gravity:0 dx:0 dy:0 blogo:0];
swift
transform.setWaterMarkWithImageUrl("", gravity: CloudInfiniteGravity.CIGravityCenter, dx: 0, dy: 0, blogo: CIWaterImageMarkBlogoEnum.none)

文字水印

Objective-C

// text 水印内容
// font 水印字体
// color 字体颜色,默认值为 #3D3D3D
// dissolve 文字透明度,取值1 - 100 ,默认90
// gravity 文字水印位置,默认值 SouthEast
// dx 水平(横轴)边距,单位为像素,缺省值为0
// dy 垂直(纵轴)边距,单位为像素,默认值为0
// batch 平铺水印功能,可将文字水印平铺至整张图片。当 batch 设置为1时,开启平铺水印功能
// degree 文字水印的旋转角度设置,取值范围为0 - 360,默认0
[transform setWaterMarkText:@"腾讯云数据万象" font:nil textColor:nil dissolve:90 gravity:CIGravitySouth dx:100 dy:100 batch:YES degree:45];
swift
transform.setWaterMarkText("腾讯云数据万象", font: nil, textColor: nil, dissolve: 90, gravity: CloudInfiniteGravity.CIGravityCenter, dx: 100, dy: 100, batch: true, degree: 45)

获取图片主题色

腾讯云数据万象通过 imageAve 接口获取图片主色调信息。API 文档请参见 获取主题色接口

Objective-C

[transform setViewBackgroudColorWithImageAveColor:YES]
swift
transform.setViewBackgroudColorWithImageAveColor(true)

去除图片元信息

腾讯云数据万象通过 imageMogr2 接口可去除图片元信息,包括 exif 信息。API 文档请参见 去除图片元信息接口

Objective-C

[transform setImageStrip];
swift
transform.setImageStrip()

目录