Adicione parâmetros de redimensionamento a uma requisição GetObject para redimensionar imagens em tempo real.
Cenários
Web design: adapte imagens para diferentes tamanhos de tela e resoluções em aplicações web e móveis.
Redes sociais: converta imagens enviadas por usuários para dimensões padrão de visualização.
Reconhecimento e análise de imagens: escale imagens para melhorar a eficiência do processamento em pipelines de visão computacional e machine learning.
Limites
|
Limite |
Item |
Descrição |
|
Limites da imagem original |
Formato da imagem |
A imagem original deve estar no formato JPG, PNG, BMP, GIF, WebP, TIFF, HEIC ou AVIF. |
|
Tamanho do arquivo |
A imagem original não pode exceder 20 MB. Para aumentar esse limite, envie uma solicitação no Quota Center. |
|
|
Largura e altura |
A largura ou altura da imagem original não pode exceder 30.000 px, e o total de pixels não pode ultrapassar 250 milhões de px. Nota
Para imagens animadas, como GIFs, o total de pixels é calculado como |
|
|
Limites da imagem redimensionada |
Dimensionamento de imagem |
A largura ou altura de uma imagem redimensionada não pode exceder 16.384 px, e o total de pixels não pode ultrapassar 16.777.216 px. |
Procedimento
Anexe ?x-oss-process=image/resize,parameter_value à URL de uma imagem. O OSS processa a imagem em tempo real e retorna o resultado. image/resize especifica uma operação de redimensionamento, onde parameter é um parâmetro de redimensionamento suportado e value é seu valor correspondente. Todos os parâmetros disponíveis estão listados em Parâmetros. É possível combinar vários parâmetros.
Para imagens de leitura pública, anexe os parâmetros diretamente à URL. Para imagens privadas, gere uma URL assinada usando um SDK ou chame uma operação de API.
Imagens de leitura pública
Adicione ?x-oss-process=image/resize,parameter_value à URL de uma imagem de leitura pública. Substitua parameter_value pelos parâmetros e valores desejados.
|
URL da imagem original |
URL da imagem com parâmetros de redimensionamento |
|
https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example1.jpg |
Imagens privadas
Utilize um SDK do OSS para gerar uma URL assinada que inclua parâmetros de redimensionamento de imagem. Os exemplos a seguir geram uma URL assinada com ?x-oss-process=image/resize,parameter_value para uma imagem privada:
Java
package com.aliyun.oss.demo;
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.GeneratePresignedUrlRequest;
import java.net.URL;
import java.util.Date;
public class Demo {
public static void main(String[] args) throws Throwable {
// This example uses the endpoint of the China (Hangzhou) region. Replace the value with the actual endpoint.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Obtain credentials from environment variables. Ensure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET variables are configured before running the code.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Specify the bucket name. Example: examplebucket.
String bucketName = "examplebucket";
// Specify the object's full path. If the object is not in the bucket's root directory, you must include its full path, such as exampledir/exampleobject.png.
String objectName = "exampledir/exampleobject.png";
// Specify the region ID where the bucket is located. For example, the region ID for China (Hangzhou) is cn-hangzhou.
String region = "cn-hangzhou";
// Create an OSSClient instance.
// Call the shutdown method to release resources when the OSSClient instance is no longer needed.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// Resize the image. Replace parameter_value with a specific parameter and value. For example, p_50 proportionally scales the image to 50% of its original size.
String style = "image/resize,parameter_value";
// Specify the expiration time of the signed URL. In this example, the signed URL expires in 3,600 seconds.
Date expiration = new Date(new Date().getTime() + 3600 );
GeneratePresignedUrlRequest req = new GeneratePresignedUrlRequest(bucketName, objectName, HttpMethod.GET);
req.setExpiration(expiration);
req.setProcess(style);
URL signedUrl = ossClient.generatePresignedUrl(req);
System.out.println(signedUrl);
} catch (OSSException oe) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "but was rejected with an error response for some reason.");
System.out.println("Error Message:" + oe.getErrorMessage());
System.out.println("Error Code:" + oe.getErrorCode());
System.out.println("Request ID:" + oe.getRequestId());
System.out.println("Host ID:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ "such as not being able to access the network.");
System.out.println("Error Message:" + ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}
Python
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Obtain credentials from environment variables. Before you run this sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Specify the bucket name.
bucket = 'examplebucket'
# Specify the endpoint of the region where the bucket is located. This example uses the China (Hangzhou) region.
endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'
# Specify the region ID.
region = 'cn-hangzhou'
bucket = oss2.Bucket(auth, endpoint, bucket, region=region)
# Specify the name of the source image. If the image is not in the root directory of the bucket, include the full path, such as exampledir/exampleobject.jpg.
key = 'exampledir/exampleobject.png'
# Specify the expiration time in seconds.
expire_time = 3600
# Resize the image. Replace parameter_value with a specific parameter and value. For example, p_50 proportionally scales the image to 50% of its original size.
image_process = 'image/resize,parameter_value'
# Generate a signed URL that includes image processing parameters.
url = bucket.sign_url('GET', key, expire_time, params={'x-oss-process': image_process}, slash_safe=True)
# Print the signed URL.
print(url)
PHP
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
// Obtain credentials from environment variables. Before you run this sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
$provider = new EnvironmentVariableCredentialsProvider();
// Set $endpoint to your bucket's region endpoint. For example, for a bucket in the China (Hangzhou) region, use https://oss-cn-hangzhou.aliyuncs.com.
$endpoint = "yourEndpoint";
// Specify the bucket name. Example: examplebucket.
$bucket= "examplebucket";
// Specify the full path of the object, such as exampledir/exampleobject.jpg. The full path cannot contain the bucket name.
$object = "exampledir/exampleobject.jpg";
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
// Generate a signed URL with image processing parameters. The URL is valid for 3,600 seconds and can be directly accessed in a browser.
$timeout = 3600;
$options = array(
// Resize the image. Replace parameter_value with a specific parameter and value. For example, p_50 proportionally scales the image to 50% of its original size.
OssClient::OSS_PROCESS => "image/resize,parameter_value");
$signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "GET", $options);
print("signed url: \n" . $signedUrl);
Go
package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func HandleError(err error) {
fmt.Println("Error:", err)
os.Exit(-1)
}
func main() {
// Obtain credentials from environment variables. Before you run this sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Create an OSSClient instance.
// Set yourEndpoint to the endpoint for your bucket's region. This example uses https://oss-cn-hangzhou.aliyuncs.com for the China (Hangzhou) region. Replace it with your actual endpoint.
// Set yourRegion to the region where your bucket is located. This example uses cn-hangzhou for the China (Hangzhou) region. Replace it with your actual region.
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// Set the signature version.
clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
client, err := oss.New("yourEndpoint", "", "", clientOptions...)
if err != nil {
HandleError(err)
}
// Specify the bucket name.
bucketName := "examplebucket"
bucket, err := client.Bucket(bucketName)
if err != nil {
HandleError(err)
}
// Specify the image's full path. If the image is not in the bucket's root directory, include the full path (e.g., exampledir/exampleobject.png).
ossImageName := "exampledir/exampleobject.png"
// Generate a signed URL that is valid for 3,600 seconds. The maximum validity period is 32,400 seconds.
// Resize the image. Replace parameter_value with a specific parameter and value. For example, p_50 proportionally scales the image to 50% of its original size.
signedURL, err := bucket.SignURL(ossImageName, oss.HTTPGet, 3600, oss.Process("image/resize,parameter_value"))
if err != nil {
HandleError(err)
} else {
fmt.Println(signedURL)
}
}
Veja abaixo um exemplo de URL assinada gerada:
https://examplebucket.oss-cn-hangzhou.aliyuncs.com/exampledir/exampleobject.png?x-oss-process=image%2Fresize%2Cp_50&x-oss-date=20241111T113707Z&x-oss-expires=3600&x-oss-signature-version=OSS4-HMAC-SHA256&x-oss-credential=LTAI********************%2F20241111%2Fcn-hangzhou%2Foss%2Faliyun_v4_request&x-oss-signature=6fd07a2ba50bf6891474dc56aed976b556b6fbcd901cfd01bcde5399bf4802cb
Exemplos adicionais de SDK estão disponíveis na Referência do SDK.
Parâmetros
Operação: resize
Dimensionamento proporcional
O parâmetro p escala uma imagem por uma porcentagem de seu tamanho original.
|
Parâmetro |
Descrição |
Valor |
|
p |
Fator de dimensionamento em porcentagem. |
Um inteiro no intervalo [1, 1000]. Um valor menor que 100 reduz a imagem, enquanto um valor maior que 100 a amplia. |
Imagens animadas não suportam este dimensionamento proporcional.
Dimensionamento por largura e altura
Use os parâmetros w e h para especificar a largura e a altura, e o parâmetro m para controlar o modo de dimensionamento. Para controlar o lado mais longo ou mais curto, utilize o parâmetro l ou s. Para permitir a ampliação, defina o parâmetro limit como 0.
|
Parâmetro |
Descrição |
Valor |
|
w |
Especifica a largura da imagem de saída, em pixels. |
[1,16384] |
|
h |
Especifica a altura da imagem de saída, em pixels. |
[1,16384] |
|
m |
Define o modo de dimensionamento. |
Cada modo está ilustrado em Métodos de cálculo de dimensionamento. Nota
Se você especificar o parâmetro |
|
l |
Define o lado mais longo da imagem de saída, em pixels. Nota
O lado mais longo é o maior valor entre largura e altura. Por exemplo, para uma imagem de 100 px × 200 px, o lado mais longo é 200 px e o mais curto é 100 px. |
[1,16384] |
|
s |
Define o lado mais curto da imagem de saída, em pixels. |
[1,16384] |
|
limit |
Indica se a ampliação é permitida quando as dimensões alvo são maiores que as dimensões da imagem original. Importante
Por padrão, se as dimensões alvo forem maiores que as originais, a imagem original é retornada. Para permitir a ampliação, defina o parâmetro |
Nota
Para imagens animadas, só é possível reduzir o tamanho especificando largura e altura. O dimensionamento proporcional e a ampliação não são suportados. |
|
color |
Define a cor de preenchimento quando o modo de dimensionamento é pad. |
Valor de cor RGB. Por exemplo, 000000 representa preto e FFFFFF representa branco. Valor padrão: FFFFFF (branco) |
-
Se você especificar apenas a largura ou apenas a altura:
Nos modos de dimensionamento lfit, mfit ou fixed, a imagem é escalada proporcionalmente. Por exemplo, se a imagem original for 256 px × 144 px e você definir a altura para 100 px, a largura será ajustada para 178 px.
Nos modos de dimensionamento pad ou fill, a largura e a altura da imagem original são ajustadas para os valores especificados. Por exemplo, se a imagem original for 256 px × 144 px e você definir a altura para 100 px, a largura também será ajustada para 100 px.
Caso especifique apenas o parâmetro
lous, a imagem será dimensionada proporcionalmente ao comprimento do lado especificado. O parâmetromé ignorado.Quando ambos
lessão especificados, o parâmetromdetermina o comportamento do dimensionamento. A proporção é sempre preservada. Se o parâmetromnão for especificado, o modo padrãolfitserá utilizado.
Métodos de dimensionamento
|
Tamanho da imagem original |
Tamanho alvo |
Modo de dimensionamento |
Tamanho redimensionado |
|
200 px × 100 px |
150 px × 80 px |
lfit (padrão) Escala a imagem proporcionalmente para criar a maior miniatura que caiba nas dimensões alvo. |
150 px × 75 px
|
|
mfit Escala a imagem proporcionalmente para criar a menor miniatura que cubra completamente as dimensões alvo. |
160 px × 80 px
|
||
|
fill Escala a imagem proporcionalmente para cobrir completamente a largura e altura alvo, depois corta o excesso para corresponder às dimensões alvo. |
150 px × 80 px
|
||
|
pad Escala a imagem proporcionalmente para caber na largura e altura alvo, depois preenche a área restante com uma cor sólida para corresponder às dimensões alvo. |
150 px × 80 px
|
||
|
fixed Redimensiona a imagem para a largura e altura exatas, ignorando sua proporção. Isso pode distorcer a imagem. |
150 px × 80 px
|
Nos modos lfit e mfit, se um cálculo de dimensionamento resultar em um valor decimal, as dimensões serão arredondadas para o inteiro mais próximo.
Exemplos
Redução proporcional
Ampliação proporcional
Redução com largura fixa
Ampliação com largura fixa
Redução com altura fixa
Ampliação com altura fixa
Dimensionamento pelo lado mais longo
Dimensionamento pelo lado mais curto
Dimensionamento com preenchimento
Dimensionamento com corte
Dimensionamento forçado
Faturamento
O dimensionamento de imagens incorre nas seguintes taxas. Para detalhes sobre preços, consulte OSS Pricing.
-
API
Item faturável
Descrição
GetObject
Requisições GET
Você é cobrado pelas taxas de requisição com base no número de requisições bem-sucedidas.
Tráfego de saída pela Internet
Se você chamar a operação GetObject usando um endpoint público, como oss-cn-hangzhou.aliyuncs.com, ou um endpoint de aceleração, como oss-accelerate.aliyuncs.com, será cobrado pelo tráfego de saída pela Internet com base no tamanho dos dados.
Recuperação de objetos IA
Se objetos IA forem recuperados, você será cobrado pelas taxas de recuperação de dados IA com base no tamanho dos dados IA recuperados.
Recuperação de objetos Archive em um bucket com acesso em tempo real ativado
Se você recuperar objetos Archive em um bucket com acesso em tempo real ativado, será cobrado pelas taxas de recuperação de dados Archive com base no tamanho dos objetos Archive recuperados.
Taxas de aceleração de transferência
Se você ativar a aceleração de transferência e usar um endpoint de aceleração para acessar seu bucket, será cobrado pelas taxas de aceleração de transferência com base no tamanho dos dados.
APIs relacionadas
Para personalização avançada, faça requisições REST API diretamente. Isso requer o cálculo manual da assinatura. Signature Version 4 (Recommended).
Para processar uma imagem, adicione parâmetros de redimensionamento à operação GetObject. Para mais informações, consulte a operação GetObject.
GET /oss.jpg?x-oss-process=image/resize,p_50 HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 28 Oct 2022 06:40:10 GMT
Authorization: SignatureValue



















