Fitur penilaian kualitas gambar mengevaluasi kualitas visual sebuah gambar berdasarkan metrik seperti resolusi, kebisingan, distorsi, saturasi warna, dan eksposur. Fitur ini memberikan skor keseluruhan yang mencerminkan kualitas gambar. Penilaian kualitas gambar dapat digunakan untuk memilih gambar sampul berkualitas tinggi untuk artikel, gambar mini untuk video, menghapus gambar duplikat, serta menyaring gambar berkualitas rendah. Topik ini menjelaskan parameter dan contoh penggunaan fitur ini.
Skenario
Pemilihan gambar sampul dokumen: Penilaian kualitas gambar membantu pembuat dokumen memilih gambar sampul berkualitas tinggi dan menarik secara visual, yang dapat meningkatkan tingkat klik dan kunjungan.
Pemilihan gambar mini video: Penilaian kualitas gambar membantu pembuat konten video memilih gambar berkualitas tinggi sebagai gambar mini video, yang dapat meningkatkan tingkat klik dan pengalaman pemirsa.
Penyaringan gambar berkualitas rendah: Dalam sistem pemrosesan dan penyimpanan gambar, gambar berkualitas rendah dapat memakan ruang penyimpanan dan menurunkan kinerja sistem serta pengalaman pengguna. Penilaian kualitas gambar dapat digunakan untuk menyaring gambar yang buram, terdistorsi, atau bising secara otomatis, sehingga meningkatkan kualitas dan kegunaan pustaka gambar.
Prasyarat
Intelligent Media Management (IMM) telah diaktifkan. Untuk informasi lebih lanjut, lihat Aktifkan IMM.
Sebuah bucket Object Storage Service (OSS) telah dikaitkan dengan proyek Intelligent Media Management (IMM) Anda. Untuk informasi lebih lanjut tentang cara mengaitkan proyek IMM dengan bucket OSS di konsol OSS, lihat Memulai. Untuk informasi lebih lanjut tentang cara mengaitkan proyek IMM dengan bucket melalui API, lihat AttachOSSBucket.
Catatan penggunaan
Penilaian kualitas gambar hanya mendukung pemrosesan sinkron (x-oss-process).
Akses anonim tidak diperbolehkan.
Anda harus memiliki izin yang diperlukan untuk menggunakan fitur ini. Untuk informasi lebih lanjut, lihat izin.
Parameter
Action: image/score
Untuk informasi lebih lanjut tentang parameter respons, lihat DetectImageScore.
Contoh
Gunakan SDK OSS
Kode sampel berikut menunjukkan cara mendapatkan skor kualitas gambar menggunakan SDK OSS untuk bahasa pemrograman umum. Jika Anda ingin menggunakan SDK untuk bahasa pemrograman lainnya, modifikasi parameter sesuai dengan kode sampel berikut.
Java
OSS SDK for Java V3.17.4 atau yang lebih baru diperlukan.
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 {
// Tentukan endpoint wilayah tempat bucket berada.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan wilayah tempat bucket menyimpan gambar. Contoh: cn-hangzhou.
String region = "cn-hangzhou";
// Dapatkan kredensial dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Tentukan nama bucket.
String bucketName = "examplebucket";
// Jika gambar disimpan di direktori root bucket, masukkan nama gambar. Jika gambar tidak disimpan di direktori root bucket, Anda harus menentukan jalur lengkap gambar. Contoh: exampledir/example.jpg.
String key = "example.jpg";
// Buat instance OSSClient.
// Panggil metode shutdown untuk melepaskan sumber daya ketika OSSClient tidak lagi digunakan.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// Buat instruksi penilaian kualitas gambar.
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);
getObjectRequest.setProcess("image/score");
// Gunakan parameter process metode getObject untuk meneruskan instruksi pemrosesan.
OSSObject ossObject = ossClient.getObject(getObjectRequest);
// Baca dan tampilkan hasil kueri.
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("Skor Gambar:");
System.out.println(imageScore);
} catch (IOException e) {
System.out.println("Error: " + e.getMessage());
} finally {
// Hentikan instance OSSClient.
ossClient.shutdown();
}
}
}Python
OSS SDK for Python V2.18.4 atau yang lebih baru diperlukan.
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Dapatkan kredensial dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'
# Tentukan ID wilayah Alibaba Cloud tempat bucket berada.
region = 'cn-hangzhou'
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', region=region)
# Jika gambar disimpan di direktori root bucket, masukkan nama gambar. Jika gambar tidak disimpan di direktori root bucket, Anda harus menentukan jalur lengkap gambar. Contoh: exampledir/example.jpg.
key = 'example.jpg'
# Buat instruksi penilaian kualitas gambar.
process = 'image/score'
try:
# Gunakan metode get_object dan teruskan instruksi pemrosesan dengan menggunakan parameter process.
result = bucket.get_object(key, process=process)
# Baca dan tampilkan hasil kueri.
image_score = result.read().decode('utf-8')
print("Skor Gambar:")
print(image_score)
except oss2.exceptions.OssError as e:
print("Error:", e)Go
OSS SDK for Go V3.0.2 atau yang lebih baru diperlukan.
package main
import (
"fmt"
"io"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Dapatkan kredensial sementara dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Buat instance OSSClient.
// Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Tentukan endpoint sebenarnya Anda.
// Tentukan ID wilayah Alibaba Cloud tempat bucket berada. Contoh: 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)
}
// Tentukan nama bucket. Contoh: examplebucket.
bucketName := "examplebucket"
bucket, err := client.Bucket(bucketName)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Jika gambar disimpan di direktori root bucket, masukkan nama gambar. Jika gambar tidak disimpan di direktori root bucket, Anda harus menentukan jalur lengkap gambar. Contoh: exampledir/example.jpg.
// Buat instruksi penilaian kualitas gambar dengan menggunakan metode oss.Process.
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
OSS SDK for PHP V2.7.0 atau yang lebih baru diperlukan.
<?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 {
// Dapatkan kredensial dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
$provider = new EnvironmentVariableCredentialsProvider();
// Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
$endpoint = 'https://oss-cn-hangzhou.aliyuncs.com';
// Tentukan nama bucket. Contoh: examplebucket.
$bucket = 'examplebucket';
// Jika gambar disimpan di direktori root bucket, masukkan nama gambar. Jika gambar tidak disimpan di direktori root bucket, Anda harus menentukan jalur lengkap gambar. Contoh: exampledir/example.jpg.
$key = 'example.jpg';
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
// Tentukan ID wilayah Alibaba Cloud tempat bucket berada.
"region" => "cn-hangzhou"
);
$ossClient = new OssClient($config);
// Buat instruksi penilaian kualitas gambar.
$options[$ossClient::OSS_PROCESS] = "image/score";
$result = $ossClient->getObject($bucket,$key,$options);
var_dump($result);
} catch (OssException $e) {
printf($e->getMessage() . "\n");
return;
}Gunakan RESTful API
Jika bisnis Anda memerlukan tingkat penyesuaian yang tinggi, Anda dapat langsung memanggil RESTful API. Untuk memanggil API secara langsung, Anda harus menyertakan perhitungan tanda tangan dalam kode Anda. Untuk informasi lebih lanjut tentang cara menghitung header Authorization, lihat Versi Tanda Tangan 4 (Direkomendasikan).
Anda dapat memproses gambar dengan menentukan parameter x-oss-process dalam permintaan GetObject. Untuk informasi lebih lanjut, lihat GetObject.
Permintaan sampel
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: SignatureValueRespons sampel
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"
}