发布:2022/5/25 10:05:35作者:管理员 来源:本站 浏览次数:1045
图片处理是OSS提供的海量、安全、低成本、高可靠的图片处理服务。原始图片上传到OSS后,您可以通过简单的RESTful接口,在任何时间、任何地点、任何互联网设备上对图片进行处理。
图片处理支持的参数请参见处理参数。
使用图片处理参数处理图片
使用单个图片处理参数处理图片并保存为本地图片
using System;
using System.IO;
using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Util;
namespace ImageProcess
{
class Program
{
static void Main(string[] args)
{
Program.ImageProcess();
Console.ReadKey();
}
public static void ImageProcess()
{
var endpoint = "<yourEndpoint>";
var accessKeyId = "<yourAccessKeyId>";
var accessKeySecret = "<yourAccessKeySecret>";
var bucketName = "<yourBucketName>";
var objectName = "<yourObjectName>";
// 本地文件名称,上传本地图片文件时使用。
// var localImageFilename = "<yourLocalImageFilename>";
// 指定保存处理后的图片的本地文件夹。
var downloadDir = "<yourDownloadDir>";
// 创建OssClient实例。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
try
{
// 若目标图片不在目标Bucket内,需上传图片到目标Bucket。
// client.PutObject(bucketName, objectName, localImageFilename);
// 将图片缩放为固定宽高100 px。
var process = "image/resize,m_fixed,w_100,h_100";
var ossObject = client.GetObject(new GetObjectRequest(bucketName, objectName, process));
// 指定处理后的图片名称。
WriteToFile(downloadDir + "/<LocalFilename>", ossObject.Content);
}
catch (OssException ex)
{
Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
Console.WriteLine("Failed with error info: {0}", ex.Message);
}
}
private static void WriteToFile(string filePath, Stream stream)
{
using (var requestStream = stream)
{
using (var fs = File.Open(filePath, FileMode.OpenOrCreate))
{
IoUtils.WriteTo(stream, fs);
}
}
}
}
}
使用不同的图片处理参数处理图片并分别保存为本地图片
using System;
using System.IO;
using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Util;
namespace ImageProcess
{
class Program
{
static void Main(string[] args)
{
Program.ImageProcess();
Console.ReadKey();
}
public static void ImageProcess()
{
var endpoint = "<yourEndpoint>";
var accessKeyId = "<yourAccessKeyId>";
var accessKeySecret = "<yourAccessKeySecret>";
var bucketName = "<yourBucketName>";
var objectName = "<yourObjectName>";
// 本地文件名称,上传本地图片文件时使用。
// var localImageFilename = "<yourLocalImageFilename>";
// 指定保存处理后的图片的本地文件夹。
var downloadDir = "<yourDownloadDir>";
// 创建OssClient实例。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
try
{
// 若目标图片不在目标Bucket内,需上传图片到目标Bucket。
// client.PutObject(bucketName, objectName, localImageFilename);
// 将图片缩放为固定宽高100 px。
var process = "image/resize,m_fixed,w_100,h_100";
var ossObject = client.GetObject(new GetObjectRequest(bucketName, objectName, process));
// 指定处理后的图片名称。
WriteToFile(downloadDir + "/<LocalFilename>", ossObject.Content);
// 从坐标(100,100)开始,将图片裁剪为宽高100 px。
process = "image/crop,w_100,h_100,x_100,y_100";
ossObject = client.GetObject(new GetObjectRequest(bucketName, objectName, process));
WriteToFile(downloadDir + "/<LocalFilename>", ossObject.Content);
// 将图片旋转90°。
process = "image/rotate,90";
ossObject = client.GetObject(new GetObjectRequest(bucketName, objectName, process));
WriteToFile(downloadDir + "/<LocalFilename>", ossObject.Content);
}
catch (OssException ex)
{
Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
Console.WriteLine("Failed with error info: {0}", ex.Message);
}
}
private static void WriteToFile(string filePath, Stream stream)
{
using (var requestStream = stream)
{
using (var fs = File.Open(filePath, FileMode.OpenOrCreate))
{
IoUtils.WriteTo(stream, fs);
}
}
}
}
}
使用多个图片处理参数处理图片并保存为本地图片
使用多个图片处理参数处理图片时,多个参数之间以正斜线(/)分隔。
using System;
using System.IO;
using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Util;
namespace ImageProcessCascade
{
class Program
{
static void Main(string[] args)
{
Program.ImageProcessCascade();
Console.ReadKey();
}
public static void ImageProcessCascade()
{
// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
var endpoint = "yourEndpoint";
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
var accessKeyId = "yourAccessKeyId";
var accessKeySecret = "yourAccessKeySecret";
// 指定原图所在的Bucket名称,例如examplebucket。
var bucketName = "examplebucket";
// 指定原图名称。如果图片不在Bucket根目录,需携带图片完整路径,例如exampledir/example.jpg。
var objectName = "exampledir/example.jpg";
// 指定原图所在的本地完整路径。
// var localImageFilename = "D:\\localpath\\example.jpg";
// 指定保存处理后的图片的本地文件夹。
var downloadDir = "yourDownloadDir";
// 创建OssClient实例。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
try
{
// 如果原图不在目标Bucket内,需上传该图片到目标Bucket。
// client.PutObject(bucketName, objectName, localImageFilename);
// 将图片缩放为固定宽高100 px后,再旋转90°。
var process = "image/resize,m_fixed,w_100,h_100/rotate,90";
var ossObject = client.GetObject(new GetObjectRequest(bucketName, objectName, process));
// 指定处理后的图片名称。
WriteToFile(downloadDir + "/yourLocalFilename", ossObject.Content);
Console.WriteLine("Get Object:{0} with process:{1} succeeded ", objectName, process);
}
catch (OssException ex)
{
Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
Console.WriteLine("Failed with error info: {0}", ex.Message);
}
}
private static void WriteToFile(string filePath, Stream stream)
{
using (var requestStream = stream)
{
using (var fs = File.Open(filePath, FileMode.OpenOrCreate))
{
IoUtils.WriteTo(stream, fs);
}
}
}
}
}
使用图片样式处理图片
您可以将多个图片处理参数封装在一个样式中,之后使用样式批量处理图片。详情请参见图片样式。以下代码展示了使用图片样式处理图片:
using System;
using System.IO;
using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Util;
namespace ImageProcessCustom
{
class Program
{
static void Main(string[] args)
{
Program.ImageProcessCustomStyle();
Console.ReadKey();
}
public static void ImageProcessCustomStyle()
{
// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
var endpoint = "yourEndpoint";
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
var accessKeyId = "yourAccessKeyId";
var accessKeySecret = "yourAccessKeySecret";
// 指定原图所在的Bucket名称,例如examplebucket。
var bucketName = "examplebucket";
// 指定原图名称。如果图片不在Bucket根目录,需携带图片完整路径,例如exampledir/example.jpg。
var objectName = "exampledir/example.jpg";
// 指定原图所在的本地完整路径。
// var localImageFilename = "D:\\localpath\\example.jpg";
// 指定保存处理后的图片的本地文件夹。
var downloadDir = "yourDownloadDir";
// 创建OssClient实例。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
try
{
// 如果原图不在目标Bucket内,需上传该图片到目标Bucket。
// client.PutObject(bucketName, objectName, localImageFilename);
// 使用图片样式处理图片。其中,yourCustomStyleName填写通过OSS管理控制台创建的图片样式名称。
var process = "style/yourCustomStyleName";
var ossObject = client.GetObject(new GetObjectRequest(bucketName, objectName, process));
// 指定处理后的图片名称。
WriteToFile(downloadDir + "/yourLocalFilename", ossObject.Content);
Console.WriteLine("Get Object:{0} with process:{1} succeeded ", objectName, process);
}
catch (OssException ex)
{
Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
Console.WriteLine("Failed with error info: {0}", ex.Message);
}
}
private static void WriteToFile(string filePath, Stream stream)
{
using (var requestStream = stream)
{
using (var fs = File.Open(filePath, FileMode.OpenOrCreate))
{
IoUtils.WriteTo(stream, fs);
}
}
}
}
}
生成带图片处理参数的文件签名URL
私有文件的访问URL带有签名。OSS不支持在带签名的URL后直接添加图片处理参数。如果您想要对私有文件进行图片处理,需要将图片处理参数加入到签名中,相关的代码示例如下:
using Aliyun.OSS;
using Aliyun.OSS.Common;
// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
var endpoint = "yourEndpoint";
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
var accessKeyId = "yourAccessKeyId";
var accessKeySecret = "yourAccessKeySecret";
// 指定图片所在Bucket的名称,例如examplebucket。
var bucketName = "examplebucket";
// 指定图片名称。如果图片不在Bucket根目录,需携带文件完整路径,例如exampledir/example.jpg。
var objectName = "exampledir/exampledir.jpg";
// 创建OssClient实例。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
try
{
// 将图片缩放为固定宽高100 px。
var process = "image/resize,m_fixed,w_100,h_100";
var req = new GeneratePresignedUriRequest(bucketName, objectName, SignHttpMethod.Get)
{
Expiration = DateTime.Now.AddHours(1),
Process = process
};
// 生成带有签名的URI。
var uri = client.GeneratePresignedUri(req);
Console.WriteLine("Generate Presigned Uri:{0} with process:{1} succeeded ", uri, process);
}
catch (OssException ex)
{
Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
Console.WriteLine("Failed with error info: {0}", ex.Message);
}
图片处理工具
您可以通过可视化图片处理工具ImageStyleViewer直观地看到OSS图片处理结果。
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4