Todos os produtos
Search
Central de documentação

Object Storage Service:Image quality assessment

Última atualização: Jul 03, 2026

O recurso de avaliação de qualidade de imagem analisa a qualidade visual com base em métricas como resolução, ruído, distorção, saturação de cor e exposição. Essa análise gera uma pontuação geral que indica a qualidade da imagem. Utilize esse recurso para selecionar imagens de capa de alta qualidade para artigos e miniaturas para vídeos, remover imagens duplicadas e filtrar imagens de baixa qualidade. Este tópico descreve os parâmetros e exemplos da avaliação de qualidade de imagem.

Cenários

  • Seleção de imagem de capa para documentos: A avaliação de qualidade de imagem auxilia criadores de conteúdo na escolha de capas visualmente atraentes e de alta qualidade, o que contribui para aumentar as taxas de cliques e visitas.

  • Escolha de miniaturas de vídeo: Este recurso permite que produtores de vídeo selecionem imagens de alta qualidade e visualmente agradáveis como miniaturas, melhorando a experiência do espectador e elevando as taxas de cliques.

  • Filtragem de imagens de baixa qualidade: Em sistemas de processamento e armazenamento de imagens, arquivos de baixa qualidade podem ocupar muito espaço e degradar o desempenho do sistema e a experiência do usuário. A avaliação de qualidade de imagem filtra automaticamente imagens desfocadas, distorcidas ou com ruído, aumentando a qualidade e a usabilidade da biblioteca de imagens.

Pré-requisitos

  • Ative o Intelligent Media Management (IMM). Para mais informações, consulte Ativar o IMM.

  • Associe um bucket do Object Storage Service (OSS) ao seu projeto do Intelligent Media Management (IMM). Para saber como associar um projeto do IMM a um bucket do OSS no console do OSS, consulte Introdução. Para obter detalhes sobre como associar um projeto do IMM a um bucket por meio de uma operação de API, consulte AttachOSSBucket.

Observações de uso

  • A avaliação de qualidade de imagem suporta apenas processamento síncrono (x-oss-process).

Parâmetros

Ação: image/score

Nota

Para mais informações sobre os parâmetros de resposta, consulte DetectImageScore.

Exemplos

Usar SDKs do OSS

Os códigos de exemplo a seguir mostram como obter a pontuação de qualidade de uma imagem usando os SDKs do OSS para linguagens de programação comuns. Caso precise obter a pontuação de qualidade de uma imagem com SDKs de outras linguagens, modifique os parâmetros com base nos exemplos abaixo.

Java

É necessário o OSS SDK for Java V3.17.4 ou posterior.

import com.aliyun.oss.ClientBuilderConfiguration;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.OSSObject;
import com.aliyun.oss.model.GetObjectRequest;
import com.aliyuncs.exceptions.ClientException;

import java.io.ByteArrayOutputStream;
import java.io.IOException;

public class Demo {
    public static void main(String[] args) throws ClientException, ClientException {
        // Specify the endpoint of the region in which the bucket is located. 
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Specify the region of the bucket in which the image is stored. Example: cn-hangzhou. 
        String region = "cn-hangzhou";
        // Obtain a credential from the 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. 
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Specify the name of the bucket. 
        String bucketName = "examplebucket";
        // If the image is stored in the root directory of the bucket, enter the image name. 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. 
        String key = "example.jpg";

        // Create an OSSClient instance.
        // Call the shutdown method to release resources when the OSSClient is no longer in use.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // Create an image quality assessment instruction. 
            GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);
            getObjectRequest.setProcess("image/score");

            // Use the process parameter of the getObject method to pass the processing instruction. 
            OSSObject ossObject = ossClient.getObject(getObjectRequest);

            // Read and display the query results. 
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = ossObject.getObjectContent().read(buffer)) != -1) {
                baos.write(buffer, 0, bytesRead);
            }
            String imageScore = baos.toString("UTF-8");
            System.out.println("Image Score:");
            System.out.println(imageScore);
        } catch (IOException e) {
            System.out.println("Error: " + e.getMessage());
        } finally {
            // Stop the OSSClient instance. 
            ossClient.shutdown();
        }
    }
}

Python

É necessário o OSS SDK for Python V2.18.4 ou posterior.

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# Obtain a credential from the 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. 
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# 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. 
endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'
# Specify the ID of the Alibaba Cloud region in which the bucket is located. 
region = 'cn-hangzhou'
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', region=region)

# If the image is stored in the root directory of the bucket, enter the image name. 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. 
key = 'example.jpg'

# Create an image quality assessment instruction. 
process = 'image/score'

try:
    # Use the get_object method and pass the processing instruction by using the process parameter. 
    result = bucket.get_object(key, process=process)

    # Read and display the query results. 
    image_score = result.read().decode('utf-8')
    print("Image Score:")
    print(image_score)
except oss2.exceptions.OssError as e:
    print("Error:", e)

Go

É necessário o OSS SDK for Go V3.0.2 ou posterior.

package main

import (
	"fmt"
	"io"
	"os"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Obtain a temporary credential from the 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. 
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	// Create an OSSClient instance. 
	// 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. Specify your actual endpoint. 
	// Specify the ID of the Alibaba Cloud region in which the bucket is located. Example: cn-hangzhou. 
	client, err := oss.New("https://oss-cn-hangzhou.aliyuncs.com", "", "", oss.SetCredentialsProvider(&provider), oss.AuthVersion(oss.AuthV4), oss.Region("cn-hangzhou"))
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	// Specify the name of the bucket. Example: examplebucket. 
	bucketName := "examplebucket"

	bucket, err := client.Bucket(bucketName)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	// If the image is stored in the root directory of the bucket, enter the image name. 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. 
	// Create an image quality assessment instruction by using the oss.Process method. 
	body, err := bucket.GetObject("example.jpg", oss.Process("image/score"))
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	defer body.Close()

	data, err := io.ReadAll(body)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	fmt.Println("data:", string(data))
}

PHP

É necessário o OSS SDK for PHP V2.7.0 ou posterior.

<?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;

try {
    // Obtain a credential from the 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. 
    $provider = new EnvironmentVariableCredentialsProvider(); 
    // 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. 
    $endpoint = 'https://oss-cn-hangzhou.aliyuncs.com';
    // Specify the name of the bucket. Example: examplebucket. 
    $bucket = 'examplebucket';
    // If the image is stored in the root directory of the bucket, enter the image name. 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. 
    $key = 'example.jpg'; 

    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,        
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        // Specify the ID of the Alibaba Cloud region in which the bucket is located. 
        "region" => "cn-hangzhou"
    );
    $ossClient = new OssClient($config);
  // Create an image quality assessment instruction. 
  $options[$ossClient::OSS_PROCESS] = "image/score";
  $result = $ossClient->getObject($bucket,$key,$options);
  var_dump($result);
} catch (OssException $e) {
  printf($e->getMessage() . "\n");
  return;
}

Usar a API RESTful

Se o seu negócio exige alto nível de personalização, chame diretamente as APIs RESTful. Para chamar uma API diretamente, inclua o cálculo da assinatura no código. Para mais informações sobre como calcular o cabeçalho Authorization, consulte (Recomendado) Incluir uma assinatura V4.

Processe imagens especificando o parâmetro x-oss-process na solicitação GetObject. Para mais informações, consulte GetObject.

Exemplo de solicitação

GET /example.jpg?x-oss-process=image/score HTTP/1.1
Host: image-demo.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 21 Jul 2023 08:28:33 GMT
Authorization: SignatureValue

Exemplo de resposta

HTTP/1.1 200 OK
Server: AliyunOSS
Date: Fri, 21 Jul 2023 08:28:34 GMT
Content-Type: application/json;charset=utf-8
Content-Length: 96
Connection: keep-alive
x-oss-request-id: 64BA41B2F326DB30370FEBC9
ETag: "2CE2EA370531B7CC1D23BE6015CF5DA5"
Last-Modified: Mon, 10 Jul 2023 13:07:30 GMT
x-oss-object-type: Normal
x-oss-hash-crc64ecma: 13420962247653419692
x-oss-storage-class: Standard
x-oss-ec: 0048-00000104
Content-Disposition: attachment
x-oss-force-download: true
x-oss-server-time: 466

{
  "ImageScore":
  {
    "OverallQualityScore":0.705
  },
  "RequestId":"E4B48BE7-46D9-589D-AB6D-C16E9A09A075"
}