Todos os produtos
Search
Central de documentação

Object Storage Service:Processamento de imagens (C# SDK v1)

Última atualização: Aug 27, 2026

O Image Processing (IMG) é um serviço seguro, econômico e altamente confiável fornecido pelo Object Storage Service (OSS) para ajudar você a processar grandes volumes de dados. Após carregar as imagens de origem no OSS, chame operações de API RESTful para processar as imagens 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, utilize um endpoint interno. Para obter mais informações sobre regiões e endpoints do OSS, consulte Regions and endpoints.

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

Use parâmetros IMG para processar uma imagem

  • Utilize um único parâmetro IMG para processar uma imagem e salvá-la no seu 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 seu 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 salvá-la no seu computador local

    O código a seguir exemplifica como usar vários parâmetros IMG para processar uma imagem. Os parâmetros IMG são separados 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);
                    }
                }
            }
        }
    }

Use um estilo de imagem para processar uma imagem

É possível encapsular vários parâmetros IMG em um estilo e depois utilizar esse estilo para processar uma imagem. Para obter mais informações, consulte Image styles. O código a seguir mostra um exemplo de como usar um estilo de imagem para processar uma imagem:

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);
                }
            }
        }
    }
}

Gere uma URL de objeto assinada que inclua parâmetros IMG

URLs de objetos privados devem ser assinadas. Não é possível adicionar parâmetros IMG diretamente ao final de uma URL assinada. Para processar um objeto de imagem privado, adicione os parâmetros IMG à assinatura. O código a seguir exemplifica como incluir parâmetros IMG em 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 suportados, consulte IMG parameters.