Todos os produtos
Search
Central de documentação

Object Storage Service:Image processing (C# SDK V1)

Última atualização: Jul 03, 2026

O Image Processing (IMG) é um serviço seguro, econômico e altamente confiável do Object Storage Service (OSS) para processar grandes volumes de dados. Após carregar as imagens originais no OSS, chame operações da API RESTful para processá-las em qualquer dispositivo conectado à internet, a qualquer momento e de qualquer lugar.

Observações

  • Este tópico utiliza o endpoint público da região China (Hangzhou). Para acessar o OSS a partir de outros serviços da Alibaba Cloud na mesma região, use um endpoint interno. Para mais informações sobre regiões e endpoints do OSS, consulte Regiões e endpoints.

  • Este tópico demonstra como criar uma instância OSSClient com um endpoint do OSS. Para configurações alternativas, como uso de domínio personalizado ou autenticação com credenciais do Security Token Service (STS), consulte Inicialização (C# SDK V1).

Uso de parâmetros IMG para processar uma imagem

  • Use um único parâmetro IMG para processar uma imagem e salvá-la no computador local

    using System;
    using System.IO;
    using Aliyun.OSS;
    using Aliyun.OSS.Common;
    using Aliyun.OSS.Util;
    
    namespace Samples
    {
        public class Program
        {
            public static void Main(string[] args)
            {
                // Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. 
                var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
                // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.  
                var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
                var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
                // Specify the name of the bucket in which the source image is stored. Example: examplebucket. 
                var bucketName = "examplebucket";
                // Specify the name of the source image. If the source image is not stored in the root directory of the bucket, you must specify the full path of the image object. Example: exampledir/example.jpg. 
                var objectName = "exampledir/example.jpg";
                // Specify the local path of the source image. 
                var localImageFilename = "D:\\localpath\\example.jpg";
                // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to cn-hangzhou.
                const string region = "cn-hangzhou";
                
                // Create a ClientConfiguration instance and modify the default parameters based on your requirements.
                var conf = new ClientConfiguration();
                
                // Use the signature algorithm V4.
                conf.SignatureVersion = SignatureVersion.V4;
                
                // Create an OSSClient instance.
                var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
                client.SetRegion(region);
                try
                {
                    // Resize the image to 100 × 100 pixels. 
                    var process = "image/resize,m_fixed,w_100,h_100";
                    var ossObject = client.GetObject(new GetObjectRequest(bucketName, objectName, process));
                    // Specify the name of the processed image. 
                    WriteToFile(localImageFilename, 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);
                    }
                }
            }
        }
    }
  • Aplique diferentes parâmetros IMG para processar uma imagem e salve os resultados separadamente no computador local

    using System;
    using System.IO;
    using Aliyun.OSS;
    using Aliyun.OSS.Common;
    using Aliyun.OSS.Util;
    namespace Samples
    {
        public class Program
        {
            public static void Main(string[] args)
            {
                // Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. 
                var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
                // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.  
                var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
                var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
                // Specify the name of the bucket in which the source image is stored. Example: examplebucket. 
                var bucketName = "examplebucket";
                // Specify the name of the source image. If the source image is not stored in the root directory of the bucket, you must specify the full path of the image object. Example: exampledir/example.jpg. 
                var objectName = "exampledir/example.jpg";
                // Specify the local path of the source image. 
                var localImageFilename = "D:\\localpath\\example.jpg";
                // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to cn-hangzhou.
                const string region = "cn-hangzhou";
                
                // Create a ClientConfiguration instance and modify the default parameters based on your requirements.
                var conf = new ClientConfiguration();
                
                // Use the signature algorithm V4.
                conf.SignatureVersion = SignatureVersion.V4;
                
                // Create an OSSClient instance.
                var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
                client.SetRegion(region);
                try
                {
                    // If the image does not exist in the specified bucket, upload the image to the bucket.    
                    // client.PutObject(bucketName, objectName, localImageFilename);
                    // Resize the image to 100 × 100 pixels. 
                    var process = "image/resize,m_fixed,w_100,h_100";
                    var ossObject = client.GetObject(new GetObjectRequest(bucketName, objectName, process));
                    // Specify the name of the processed image. 
                    WriteToFile(localImageFilename, ossObject.Content);
                    // Crop the image to 100 × 100 pixels starting from the position specified by coordinate pair (100, 100). 
                    process = "image/crop,w_100,h_100,x_100,y_100";
                    ossObject = client.GetObject(new GetObjectRequest(bucketName, objectName, process));
                    WriteToFile(localImageFilename , ossObject.Content);
                    // Rotate the image 90 degrees. 
                    process = "image/rotate,90";
                    ossObject = client.GetObject(new GetObjectRequest(bucketName, objectName, process));
                    WriteToFile(localImageFilename , 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);
                    }
                }
            }
        }
    }
  • Combine múltiplos parâmetros IMG para processar uma imagem e salvar o resultado no computador local

    O código a seguir exemplifica como usar vários parâmetros IMG para processar uma imagem. Separe os parâmetros IMG por barras (/).

    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()
            {
                // Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. 
                var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
                // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.  
                var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
                var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
                // Specify the name of the bucket in which the source image is stored. Example: examplebucket. 
                var bucketName = "examplebucket";
                // Specify the name of the source image. If the source image is not stored in the root directory of the bucket, you must specify the full path of the image object. Example: exampledir/example.jpg. 
                var objectName = "exampledir/example.jpg";
                // Specify the local path of the source image. 
                var localImageFilename = "D:\\localpath\\example.jpg";
                // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to cn-hangzhou.
                const string region = "cn-hangzhou";
                
                // Create a ClientConfiguration instance and modify the default parameters based on your requirements.
                var conf = new ClientConfiguration();
                
                // Use the signature algorithm V4.
                conf.SignatureVersion = SignatureVersion.V4;
                
                // Create an OSSClient instance.
                var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
                client.SetRegion(region);
                try
                {
                    // If the source image does not exist in the specified bucket, upload the image to the bucket.    
                    // client.PutObject(bucketName, objectName, localImageFilename);
                    // After you resize the image to 100 × 100 pixels, rotate the image 90 degrees. 
                    var process = "image/resize,m_fixed,w_100,h_100/rotate,90";
                    var ossObject = client.GetObject(new GetObjectRequest(bucketName, objectName, process));
                    // Specify the name of the processed image. 
                    WriteToFile(localImageFilename, 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);
                    }
                }
            }
        }
    }

Uso de estilo de imagem para processamento

Agrupe diversos parâmetros IMG em um estilo e utilize-o para processar uma imagem. Para mais detalhes, consulte Estilos de imagem. O exemplo de código abaixo ilustra como aplicar um estilo de imagem no processamento:

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()
        {
            // Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. 
            var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
            // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.  
            var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
            var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
            // Specify the name of the bucket in which the source image is stored. Example: examplebucket. 
            var bucketName = "examplebucket";
            // Specify the name of the source image. If the source image is not stored in the root directory of the bucket, you must specify the full path of the image object. Example: exampledir/example.jpg. 
            var objectName = "exampledir/example.jpg";
            // Specify the local path of the source image. 
            var localImageFilename = "D:\\localpath\\example.jpg";
            // Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to cn-hangzhou.
            const string region = "cn-hangzhou";
            
            // Create a ClientConfiguration instance and modify the default parameters based on your requirements.
            var conf = new ClientConfiguration();
            
            // Use the signature algorithm V4.
            conf.SignatureVersion = SignatureVersion.V4;
            
            // Create an OSSClient instance.
            var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
            client.SetRegion(region);
            try
            {
                // If the source image does not exist in the specified bucket, upload the image to the bucket.    
                // client.PutObject(bucketName, objectName, localImageFilename);
                // Use the image style to process the image. In this example, replace yourCustomStyleName with the name of the image style that you created in the OSS console. 
                var process = "style/yourCustomStyleName";
                var ossObject = client.GetObject(new GetObjectRequest(bucketName, objectName, process));
                // Specify the name of the processed image.             
                WriteToFile(localImageFilename, 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);
                }
            }
        }
    }
}

Geração de URL de objeto assinada com parâmetros IMG

URLs de objetos privados exigem assinatura. Não adicione parâmetros IMG diretamente ao final de uma URL assinada. Para processar um objeto de imagem privado, inclua os parâmetros IMG na assinatura. O código a seguir mostra como adicionar parâmetros IMG a uma assinatura:

using Aliyun.OSS;
using Aliyun.OSS.Common;

// Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. 
var endpoint = "yourEndpoint";
// Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.  
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID"); 
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Specify the name of the bucket in which the source image is stored. Example: examplebucket. 
var bucketName = "examplebucket";
// Specify the name of the source image. If the image is not stored in the root directory of the bucket, you must specify the full path of the image. Example: exampledir/example.jpg. 
var objectName = "exampledir/exampledir.jpg";
// Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to cn-hangzhou.
const string region = "cn-hangzhou";

// Create a ClientConfiguration instance and modify the default parameters based on your requirements.
var conf = new ClientConfiguration();

// Use the signature algorithm V4.
conf.SignatureVersion = SignatureVersion.V4;

// Create an OSSClient instance.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
    // Resize the image to 100 × 100 pixels. 
    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
    };
    // Generate a signed URL. 
    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);
}

Referências

  • Para acessar o código de exemplo completo do IMG, visite o GitHub.

  • Para obter mais detalhes sobre os parâmetros IMG compatíveis, consulte Parâmetros IMG.