OSS圖片處理,是OSS對外提供的海量、安全、低成本、高可靠的圖片處理。使用者將原始圖片上傳保存到OSS,通過簡單的 RESTful
介面,在任何時間、任何地點、任何互連網裝置上對圖片進行處理。圖片處理提供圖片處理介面,圖片上傳請使用上傳介面。基於OSS圖片處理,使用者可以搭建自己的圖片處理服務。
圖片處理基礎功能
OSS圖片處理提供以下功能:
圖片處理使用
圖片處理使用標準的 HTTP GET
請求來訪問,所有的處理參數是編碼在 URL
中的QueyString。
匿名訪問
如果圖片檔案(Object)的存取權限是 公共讀
,如下表所示的許可權,則可以匿名訪問圖片服務。
Bucket許可權 | Object許可權 |
---|---|
公共讀私有寫(public-read)或 公共讀寫(public-read-write) |
預設(default) |
任意許可權 | 公共讀私有寫(public-read)或 公共讀寫(public-read-write) |
通過如下格式的第三層網域名匿名訪問圖片處理:
http://bucket.<endpoint>/object?x-oss-process=image/action,param_value
- bucket:使用者的儲存空間(bucket)名稱
- endpoint:使用者儲存空間所在資料中心的訪問網域名稱
- object:使用者上傳在OSS上的圖片檔案
- image:圖片處理保留標誌符
- action:使用者對圖片做的操作,如縮放、裁剪、旋轉等
- param:使用者對圖片做的操作所對應的參數
例如:
http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_100
自訂樣式,使用如下格式的第三層網域名匿名訪問圖片處理:
http://bucket.<endpoint>/object?x-oss-process=x-oss-process=style/name
- style:使用者自訂樣式系統保留標誌符
- name:自訂樣式名稱,即控制台定義樣式的
規則名
例如:
http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=style/oss-pic-style-w-100
通過級聯處理,可以對一張圖片順序實施多個操作,格式如下:
http://bucket.<endpoint>/object?x-oss-process=image/action,parame_value/action,param_value/...
例如:
http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_100/rotate,90
圖片服務也支援HTTPS訪問,例如:
https://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_100
授權訪問
對私有許可權的檔案(Object),如下表所示的許可權,必須通過授權才能訪問圖片服務。
Bucket許可權 | Object許可權 |
---|---|
私有讀寫(private) | 預設許可權(default) |
任意許可權 | 私有讀寫(private) |
生成帶簽名的圖片處理的URL代碼如下:
let OSS = require('ali-oss');
let client = new OSS({
accessKeyId: '<accessKeyId>',
accessKeySecret: '<accessKeySecret>',
bucket: '<bucketName>',
endpoint: '<endpoint, 例如http://oss-cn-hangzhou.aliyuncs.com>'
});
// 過期時間10分鐘, 圖片處理式樣"image/resize,w_300"
let signUrl = client.signatureUrl('example.jpg', {expires: 600, 'process' : 'image/resize,w_300'});
console.log("signUrl="+signUrl);
提示:
- 授權訪問支援
自訂樣式
、HTTPS
、級聯處理
- 指定過期時間expires的單位是秒
SDK訪問
對於任意許可權的圖片檔案,都可以直接使用 SDK
訪問圖片、進行處理。
提示:
- SDK處理圖片檔案支援
自訂樣式
、HTTPS
、級聯處理
基礎操作
圖片處理的基礎操作包括,獲取圖片資訊、格式轉換、縮放、裁剪、旋轉、效果、浮水印等。
let OSS = require('ali-oss');
let client = new OSS({
accessKeyId: '<accessKeyId>',
accessKeySecret: '<accessKeySecret>',
bucket: '<bucketName>',
endpoint: '<endpoint, 例如http://oss-cn-hangzhou.aliyuncs.com>'
});
// 縮放
async function scale () {
try {
let result = await client.get('example.jpg', './example-resize.jpg', { process: 'image/resize,m_fixed,w_100,h_100'});
} catch (e) {
console.log(e);
}
}
// 裁剪
async function cut () {
try {
let result = await client.get('example.jpg', './example-crop.jpg', { process: 'image/crop,w_100,h_100,x_100,y_100,r_1'});
} catch (e) {
console.log(e)
}
}
// 旋轉
async function rotate () {
try {
let result = await client.get('example.jpg', './example-rotate.jpg', { process: 'image/rotate,90'});
} catch (e) {
console.log(e);
}
}
// 銳化
async function sharpen () {
try {
let result = yield client.get('example.jpg', './example-sharpen.jpg', { process: 'image/sharpen,100'});
} catch (e) {
console.log(e);
}
}
// 浮水印
async function watermark () {
try {
let result = yield client.get('example.jpg', './example-watermark.jpg', { process: 'image/watermark,text_SGVsbG8g5Zu-54mH5pyN5YqhIQ'});
} catch (e) {
console.log(e);
}
}
// 格式轉換
async function format () {
try {
let result = await client.get('example.jpg', './example-format.jpg', { process: 'image/format,png'});
} catch (e) {
console.log(e);
}
}
// 圖片資訊
async function info () {
try {
let result = await client.get('example.jpg', './example-info.txt', {process: 'image/info'});
} catch (e) {
console.log(e);
}
}
自訂樣式
提示:需要事先到oss控制台添加自訂式樣example-sytle
let OSS = require('ali-oss');
let client = new OSS({
accessKeyId: '<accessKeyId>',
accessKeySecret: '<accessKeySecret>',
bucket: '<bucketName>',
endpoint: '<endpoint, 例如http://oss-cn-hangzhou.aliyuncs.com>'
});
// 自訂樣式
async function style () {
try {
let result = await client.get('example.jpg', './example-custom-style.jpg', {process: 'style/example-sytle"'});
} catch (e) {
console.log(e);
}
}
style();
級聯處理
let OSS = require('ali-oss');
let client = new OSS({
accessKeyId: '<accessKeyId>',
accessKeySecret: '<accessKeySecret>',
bucket: '<bucketName>',
endpoint: '<endpoint, 例如http://oss-cn-hangzhou.aliyuncs.com>'
});
// 級聯處理
async function cascade () {
try {
let result = await client.get('example.jpg', './example-cascade.jpg', {process: 'image/resize,m_fixed,w_100,h_100/rotate,90'});
} catch (e) {
console.log(e);
}
}
cascade();
圖片處理工具
- 可視化圖片處理工具 ImageStyleViever ,可以直觀的看到OSS圖片處理的結果
- OSS圖片處理的功能、使用示範 頁面