Görüntüleri anında yeniden boyutlandırmak için bir GetObject isteğine görüntü yeniden boyutlandırma parametrelerini ekleyin.
Senaryolar
Web tasarımı: Web ve mobil uygulamalarda farklı ekran boyutları ve çözünürlükler için görüntüleri uyarlayın.
Sosyal medya: Kullanıcıların yüklediği görüntüleri standart önizleme boyutlarına dönüştürün.
Görüntü tanıma ve analiz: Bilgisayarlı görü ve makine öğrenimi işlem hatlarında işleme verimliliğini artırmak için görüntüleri ölçeklendirin.
Sınırlamalar
|
Sınır |
Öğe |
Açıklama |
|
Kaynak görüntü sınırlamaları |
Görüntü biçimi |
Kaynak görüntü JPG, PNG, BMP, GIF, WebP, TIFF, HEIC veya AVIF biçiminde olmalıdır. |
|
Dosya boyutu |
Kaynak görüntünün boyutu 20 MB'yi aşamaz. Bu sınırı artırmak için Quota Center içinde bir istek gönderin. |
|
|
Genişlik ve yükseklik |
Kaynak görüntünün genişliği veya yüksekliği 30.000 pikseli, toplam piksel sayısı ise 250 milyon pikseli aşamaz. Not
GIF gibi animasyonlu görüntülerde toplam piksel sayısı |
|
|
Ölçeklendirilmiş görüntü sınırlamaları |
Görüntü ölçeklendirme |
Ölçeklendirilmiş bir görüntünün genişliği veya yüksekliği 16.384 pikseli, toplam piksel sayısı ise 16.777.216 pikseli aşamaz. |
Yordam
Bir görüntü URL'sine ?x-oss-process=image/resize,parameter_value ekleyin. OSS görüntüyü gerçek zamanlı olarak işler ve sonucu döndürür. image/resize bir yeniden boyutlandırma işlemi belirtir; burada parameter desteklenen bir yeniden boyutlandırma parametresi ve value buna karşılık gelen değerdir. Kullanılabilir tüm parametreler Parametreler bölümünde listelenmiştir. Birden çok parametreyi birleştirebilirsiniz.
Herkese açık okuma iznine sahip görüntüler için parametreleri doğrudan URL'ye ekleyin. Özel görüntüler için bir SDK kullanarak imzalı bir URL oluşturun veya bir API işlemi çağırın.
Herkese açık okuma iznine sahip görüntüler
Herkese açık okuma iznine sahip bir görüntü URL'sine ?x-oss-process=image/resize,parameter_value ekleyin. parameter_value ifadesini gerekli parametreleriniz ve değerlerinizle değiştirin.
|
|
|
|
|
Özel görüntüler
Görüntü yeniden boyutlandırma parametrelerini içeren imzalı bir URL oluşturmak için bir OSS SDK kullanın. Aşağıdaki örneklerde özel bir görüntü için ?x-oss-process=image/resize,parameter_value içeren imzalı bir URL oluşturulmaktadır:
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)
}
}
Aşağıda oluşturulan imzalı bir URL örneği verilmiştir:
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
Ek SDK örnekleri için SDK referansı bölümüne bakın.
Parametreler
İşlem: resize
Orantılı ölçeklendirme
p parametresi, bir görüntüyü orijinal boyutunun yüzdesine göre ölçeklendirir.
|
|
|
|
|
|
|
[1, 1000] aralığında bir tamsayı. 100'den küçük bir değer görüntüyü küçültür, 100'den büyük bir değer ise büyütür. |
Animasyonlu görüntüler bu orantılı ölçeklendirmeyi desteklemez.
Genişlik ve yüksekliğe göre ölçeklendirme
Genişliği ve yüksekliği belirtmek için w ve h parametrelerini, ölçeklendirme modunu kontrol etmek için m parametresini kullanın. En uzun veya en kısa kenarı kontrol etmek için l veya s parametresini kullanın. Büyütmeye izin vermek için limit parametresini 0 olarak ayarlayın.
|
Parametre |
Açıklama |
Değer |
|
w |
Çıktı görüntüsünün genişliğini piksel cinsinden belirtir. |
[1,16384] |
|
h |
Çıktı görüntüsünün yüksekliğini piksel cinsinden belirtir. |
[1,16384] |
|
m |
Ölçeklendirme modunu belirtir. |
Her mod Ölçeklendirme hesaplama yöntemleri bölümünde gösterilmiştir. Not
|
|
l |
Çıktı görüntüsünün en uzun kenarını piksel cinsinden belirtir. Not
En uzun kenar, genişlik ve yüksekliğin büyük olanıdır. Örneğin, 100 px × 200 px'lik bir görüntü için en uzun kenar 200 px, en kısa kenar ise 100 px'dir. |
[1,16384] |
|
s |
Çıktı görüntüsünün en kısa kenarını piksel cinsinden belirtir. |
[1,16384] |
|
limit |
Hedef boyutlar orijinal görüntü boyutlarından daha büyük olduğunda büyütmeye izin verilip verilmeyeceğini belirtir. Önemli
Varsayılan olarak, hedef boyutlar orijinalden büyükse orijinal görüntü döndürülür. Büyütmeye izin vermek için |
Not
Animasyonlu görüntülerde yalnızca genişlik ve yükseklik belirterek küçültme yapabilirsiniz. Orantılı ölçeklendirme ve büyütme desteklenmez. |
|
color |
Ölçeklendirme modu pad olduğunda dolgu rengini ayarlar. |
RGB renk değeri. Örneğin, 000000 siyahı, FFFFFF ise beyazı temsil eder. Varsayılan değer: FFFFFF (beyaz) |
-
Yalnızca genişliği veya yalnızca yüksekliği belirtirseniz:
Ölçeklendirme modu lfit, mfit veya fixed olduğunda görüntü orantılı olarak ölçeklendirilir. Örneğin, kaynak görüntü 256 px × 144 px ise ve yüksekliği 100 px'e ölçeklendirilirse genişlik 178 px'e ölçeklendirilir.
Ölçeklendirme modu pad veya fill olduğunda kaynak görüntünün genişliği ve yüksekliği belirtilen değerlere ölçeklendirilir. Örneğin, kaynak görüntü 256 px × 144 px ise ve yükseklik 100 px'e ölçeklendirilirse genişlik de 100 px'e ölçeklendirilir.
Yalnızca
lveyasparametresini belirtirseniz görüntü belirtilen kenar uzunluğuna orantılı olarak ölçeklendirilir.mparametresi yoksayılır.lvesparametrelerinin her ikisi de belirtildiğindemparametresi ölçeklendirme davranışını belirler. En-boy oranı her zaman korunur.mparametresi belirtilmezse varsayılanlfitmodu kullanılır.
Ölçeklendirme yöntemleri
|
Orijinal görüntü boyutu |
Hedef boyut |
Ölçeklendirme modu |
Ölçeklendirilmiş boyut |
|
200 px × 100 px |
150 px × 80 px |
lfit (varsayılan) Görüntüyü, hedef boyutlara sığan en büyük küçük resmi oluşturacak şekilde orantılı olarak ölçeklendirir. |
150 px × 75 px
|
|
mfit Görüntüyü, hedef boyutları tamamen kapsayan en küçük küçük resmi oluşturacak şekilde orantılı olarak ölçeklendirir. |
160 px × 80 px
|
||
|
fill Görüntüyü, hedef genişlik ve yüksekliği tamamen kapsayacak şekilde orantılı olarak ölçeklendirir, ardından hedef boyutlarla eşleşmesi için fazlalığı kırpar. |
150 px × 80 px
|
||
|
pad Görüntüyü, hedef genişlik ve yüksekliğe sığacak şekilde orantılı olarak ölçeklendirir, ardından hedef boyutlarla eşleşmesi için kalan alanı düz bir renkle doldurur. |
150 px × 80 px
|
||
|
fixed En-boy oranını yok sayarak görüntüyü tam olarak belirtilen genişlik ve yüksekliğe ölçeklendirir. Bu durum görüntünün bozulmasına neden olabilir. |
150 px × 80 px
|
lfit ve mfit modlarında, bir ölçeklendirme hesabı ondalık bir değerle sonuçlanırsa boyutlar en yakın tamsayıya yuvarlanır.
Örnekler
Orantılı olarak küçültme
Orantılı olarak büyütme
Sabit genişlikle küçültme
Sabit genişlikle büyütme
Sabit yükseklikle küçültme
Sabit yükseklikle büyütme
Daha uzun kenara göre ölçeklendirme
Daha kısa kenara göre ölçeklendirme
Ölçeklendirme ve dolgu ekleme
Ölçeklendirme ve kırpma
Zorla ölçeklendirme
Faturalandırma
Görüntü ölçeklendirme aşağıdaki ücretlere tabidir. Fiyatlandırma ayrıntıları için bkz. OSS Fiyatlandırması.
-
API
Faturalandırılan öğe
Açıklama
GetObject
GET istekleri
Başarılı istek sayısına göre istek ücretleri tahsil edilir.
İnternet üzerinden giden trafik
GetObject işlemine oss-cn-hangzhou.aliyuncs.com gibi bir genel uç nokta veya oss-accelerate.aliyuncs.com gibi bir hızlandırma uç noktası kullanarak çağrı yapıyorsanız veri boyutuna göre internet üzerinden giden trafik ücretleri tahsil edilir.
IA nesnelerinin alınması
IA nesneleri alınıyorsa alınan IA verilerinin boyutuna göre IA veri alma ücretleri tahsil edilir.
Gerçek zamanlı erişimin etkinleştirildiği bir paket içindeki Arşiv nesnelerinin alınması
Gerçek zamanlı erişimin etkinleştirildiği bir pakette Arşiv nesnelerini alıyorsanız alınan Arşiv nesnelerinin boyutuna göre Arşiv veri alma ücretleri tahsil edilir.
Aktarma hızlandırma ücretleri
Aktarma hızlandırmayı etkinleştirir ve paketinize erişmek için bir hızlandırma uç noktası kullanırsanız veri boyutuna göre aktarma hızlandırma ücretleri tahsil edilir.
İlgili API'ler
Gelişmiş özelleştirme için doğrudan REST API istekleri yapın. Bu işlem, imzanın manuel olarak hesaplanmasını gerektirir. İmza Sürüm 4 (Önerilen).
Bir görüntüyü işlemek için GetObject işlemine görüntü yeniden boyutlandırma parametreleri ekleyin. Daha fazla bilgi için bkz. GetObject işlemi.
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



















