Optidash 是一个现代化的、AI 驱动的图像优化和处理的 API。
我们将大大加快您的网站速度,并节省带宽和存储费用。
文档
查看 Optidash API 文档。
使用 Carthage 安装
Carthage 是一个集中式依赖项管理器,它可以自动化将框架添加到您的 Cocoa 应用程序的过程。您可以使用以下命令使用 Homebrew 安装 Carthage
$ brew update
$ brew install carthage
要使用 Carthage 将 Optidash 集成到您的 Xcode 项目中,请在您的 Cartfile 中指定它
github "optidash-ai/optidash-swift"
使用 CocoaPods 安装
source 'https://github.com/CocoaPods/Specs.git'
pod 'Optidash', '~> 1.0.0'
快速示例
Optidash API 允许您以两种方式提供您的图像以进行处理 - 直接通过 API 上传它们 (图像上传) 或通过提供公开可用的图像 URL (图像抓取)。
您还可以根据请求选择您偏好的响应方法。默认情况下,Optidash API 将返回一个包含有关输入和输出图像的丰富元数据的JSON响应。或者,您可以使用二进制响应。启用时,API 将以结果(输出)图像的完整二进制表示形式响应。此 Swift 模块公开了两个与二进制响应交互的便利方法:.toFile()
和.toBuffer()
。
图片上传
以下是一个快速示例,展示如何上传本地文件进行处理。它在最后一步调用.toJson()
,并指导 API 返回一个 JSON 响应。
// Pass your Optidash API Key to the constructor
let opti = OptidashClient(key: "YOUR-API-KEY")
// Upload an image from disk and resize it to 1024 x 768,
// using 'fit' mode and gravity set to 'bottom'
let fileUrl = Bundle.main.url(forResource: "sample", withExtension: "jpg")!
let parameters: [String : Any] = [
"width": 1024,
"height": "768",
"mode": "fit",
"gravity": "bottom"
]
do {
try opti.upload(fileUrl: fileUrl)
.resize(parameters)
.toJson() { [weak self] (result) in
switch (result) {
case .success(let data):
DispatchQueue.main.async {
let response = try? JSONSerialization.jsonObject(with: data, options: .mutableContainers)
print(response!)
}
case .failure(let error):
DispatchQueue.main.async {
print(error)
}
}
}
} catch let error {
print(error)
}
图片获取
如果您已经在网上公开了您的源视觉素材,我们推荐使用默认的 Image Fetch。这样您只需要发送一个包含图像 URL 和处理步骤的 JSON 有效载荷。此方法也比上传图像的完整二进制表示快得多。
// Pass your Optidash API Key to the constructor
let opti = OptidashClient(key: "YOUR-API-KEY")
// Provide a publicly available image URL with `.fetch()` method
// and resize it to 1024 x 768 using 'fit' mode and gravity set to 'bottom'
let imageURL = URL(string: "https://www.website.com/image.jpg")!
let parameters: [String : Any] = [
"width": 1024,
"height": "768",
"mode": "fit",
"gravity": "bottom"
]
do {
try opti.fetch(url: imageURL)
.resize(parameters)
.toJson() { [weak self] (result) in
switch (result) {
case .success(let data):
DispatchQueue.main.async {
let response = try? JSONSerialization.jsonObject(with: data, options: .mutableContainers)
print(response!)
}
case .failure(let error):
DispatchQueue.main.async {
print(error)
}
}
}
} catch let error {
print(error)
}
许可证
本软件基于 MIT 许可证发布。有关更多信息,请参阅LICENSE文件。