تشكّل Image API جزءًا من واجهة Product Studio الفرعية. تستفيد هذه الأداة من أدوات الذكاء الاصطناعي التوليدي في واجهة برمجة التطبيقات Google Product Studio (GPS) لإنشاء صور المنتجات وتحسينها. يمكنك استخدامها لتحسين تفاعل العملاء وزيادة الإحالات الناجحة.
ما الذي يمكن إنشاؤه باستخدام واجهة برمجة التطبيقات؟
- صور منتجات بخلفيات من إنشاء الذكاء الاصطناعي استنادًا إلى معلومات المنتج المقدَّمة وطلب نصي
- صور المنتجات التي تمت إزالة خلفية الصورة الأصلية منها
- صور المنتجات التي تم تحسين دقة الصورة الأصلية فيها
إنشاء خلفية صورة
يمكن أن تنشئ طريقة GenerateProductImageBackground
صور منتجات بخلفيات من إنشاء الذكاء الاصطناعي باستخدام صورة المنتج الأصلية وطلب نصي يقدّم تفاصيل حول الخلفية.
تقبل واجهة برمجة التطبيقات ما يلي:
- صورة المنتج: يمكن أن تكون أيًّا ممّا يلي:
- معرّف موارد منتظم (URI) يشير إلى صورة المنتج (مثل
{"image_uri": "https://my-store.com/img/1.png"}
) - وحدات بايت الصورة الأولية، مثل
{"image_bytes": b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01'}
- معرّف موارد منتظم (URI) يشير إلى صورة المنتج (مثل
- الطلب: سلسلة تحدّد الخلفية المطلوب إنشاؤها:
-
product_description
: وصف المنتج background_description
: وصف الخلفية المطلوبة
-
إزالة خلفية صورة
يمكن أن تنشئ الطريقة RemoveProductImageBackground
صورًا تمت إزالة الخلفية منها من صورة المنتج الأصلية.
تقبل واجهة برمجة التطبيقات ما يلي:
- صورة المنتج: يمكن أن تكون أيًّا ممّا يلي:
- معرّف URI يشير إلى صورة المنتج، مثل
{"image_uri": "https://my-store.com/img/1.png"}
- وحدات بايت الصورة الأولية، مثل
{"image_bytes": b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01'}
- معرّف URI يشير إلى صورة المنتج، مثل
- لون الخلفية: لون الخلفية بعد الإزالة، ويتم تقديمه بتنسيق RGB. إذا لم يتم تحديد أي لون، ستكون الخلفية صورة شفافة ذات 4 قنوات بتنسيق RGBA.
تحسين دقة صورة
يمكن أن تنشئ UpscaleProductImage
صورًا محسّنة الدقة من صورة منتجك الأصلية.
تقبل واجهة برمجة التطبيقات صورة المنتج. يمكن أن يكون أيًا مما يلي:
- معرّف URI يشير إلى صورة المنتج، مثل
{"image_uri": "https://my-store.com/img/1.png"}
- وحدات بايت الصورة الأولية، مثل
{"image_bytes": "image_bytes"}
استخدام مكتبات البرامج
ننصحك باستخدام مكتبات برامج العميل لإرسال طلباتك. إذا لم تتوفر مكتبة برامج متوافقة مع لغتك، يمكننا تزويدك بملفات المكتبة مباشرةً (في رسالة إلكترونية أو مجلد على Drive مشترك) لتثبيتها، مثلاً، ضمن مشروع Maven.
أمثلة
تستخدِم الأمثلة التالية واجهة برمجة التطبيقات لإنشاء صور المنتجات أو تحسينها.
إنشاء خلفية لصورة منتج
يوضّح المثال كيفية إنشاء صورة منتج بالخلفية التي اخترتها.
طلب
يحتوي نص الطلب على الصورة (معرّف الموارد المنتظم أو وحدات البايت) والطلب لإنشاء الخلفية. في ما يلي مثال على بنية الطلب باستخدام عنوان URI لصورة:
POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}/generatedImages:generateProductImageBackground
{
"input_image": {
"image_uri": "https://services.google.com/fh/files/misc/abundance_intention_bath_salts.jpg"
},
"config": {
"product_description": "a jar"
"background_description": "sitting on a cracked stone surface surrounded by a cherry blossom tree and pink and white flowers in the background, high resolution, product photography, strong shadows and lights, creative"
}
}
بدلاً من ذلك، يمكنك استخدام وحدات بايت لصور أولية:
POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}/generatedImages:generateProductImageBackground
{
"input_image": {
"image_bytes": "b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00\xff'"
},
"config": {
"product_description": "a jar"
"background_description": "sitting on a cracked stone surface surrounded by a cherry blossom tree and pink and white flowers in the background, high resolution, product photography, strong shadows and lights, creative"
}
}
الردّ
يمكنك توقّع ردّ مثل:
{
"generated_image": {
"image_bytes": "b'\x7d\x1b\x8f\x04\x5c\x9e\x23\xf0\x6a\xd1\x4b\x87\x0c\x3e\xa9\x21\xb5'"
"generation_time": "2025-05-13T00:06:54.754828Z"
},
}
أو إذا تم ضبط return_image_uri
على true
في output_config,
، سيظهر على النحو التالي:
{
"generated_image": {
"uri": "https://lh3.googleusercontent.com/gps-generations/AI9LgEvIFfK0YaLKvwvIBc9ItJtJGFE6hi25o6-N3Fz6YTw57pFghfIVlCGve7eyJcQkhoAqGAf8NDzW70qjwGOCuHhiouqF2nqxBwCcfDxZPkYRl3h7CIjyev9asJw7x-0g0V_xvurfowZJ0moXu98kmV01A3Thv2ZRlTAiOPYuEb8wnY7EeyD9l48lDdwJgZ4jqxtTgrRbwvpno4NICj9q830RzATiBHuJ_WUFQJiHOMAqbGyrQIWQTQ",
"generation_time": "2025-05-13T00:06:54.754828Z"
}
}
عيّنة تعليمات برمجية
في ما يلي نموذج رمز برمجي يوضّح كيفية إنشاء خلفية لصورة منتج:
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.productstudio.v1alpha.GenerateImageBackgroundConfig;
import com.google.shopping.merchant.productstudio.v1alpha.GenerateProductImageBackgroundRequest;
import com.google.shopping.merchant.productstudio.v1alpha.GenerateProductImageBackgroundResponse;
import com.google.shopping.merchant.productstudio.v1alpha.ImageServiceClient;
import com.google.shopping.merchant.productstudio.v1alpha.ImageServiceSettings;
import com.google.shopping.merchant.productstudio.v1alpha.InputImage;
import com.google.shopping.merchant.productstudio.v1alpha.OutputImageConfig;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to create product images with generated backgrounds. */
public class GenerateProductImageBackgroundSample {
private static String getName(String accountId) {
return String.format("accounts/%s", accountId);
}
public static void generateProductImageBackground(Config config, String imageUri)
throws Exception {
// Obtains OAuth token based on the user's configuration.
GoogleCredentials credential = new Authenticator().authenticate();
ImageServiceSettings imageServiceSettings =
ImageServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
String name = getName(config.getAccountId().toString());
// Calls the API and catches and prints any network failures/errors.
try (ImageServiceClient imageServiceClient = ImageServiceClient.create(imageServiceSettings)) {
OutputImageConfig outputImageConfig =
// Set this field to false to return the image bytes in the response instead.
OutputImageConfig.newBuilder().setReturnImageUri(true).build();
InputImage inputImage =
InputImage.newBuilder()
// You can also use image bytes here instead of a URI.
.setImageUri(imageUri)
.build();
GenerateImageBackgroundConfig generateImageBackgroundConfig =
GenerateImageBackgroundConfig.newBuilder()
.setProductDescription("a jar")
.setBackgroundDescription(
"sitting on a cracked stone surface surrounded by a cherry blossom tree and pink"
+ " and white flowers in the background, high resolution, product"
+ " photography, strong shadows and lights, creative")
.build();
GenerateProductImageBackgroundRequest request =
GenerateProductImageBackgroundRequest.newBuilder()
.setName(name)
.setOutputConfig(outputImageConfig)
.setInputImage(inputImage)
.setConfig(generateImageBackgroundConfig)
.build();
System.out.println("Sending GenerateProductImageBackground request: " + name);
GenerateProductImageBackgroundResponse response =
imageServiceClient.generateProductImageBackground(request);
System.out.println("Generated product image background response below:");
System.out.println(response);
} catch (Exception e) {
System.out.println("An error has occurred: ");
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
// Replace with your image URI.
String imageUri =
"https://services.google.com/fh/files/misc/abundance_intention_bath_salts.jpg";
generateProductImageBackground(config, imageUri);
}
}
إزالة خلفية من صورة منتج
يعرض المثال كيفية إزالة الخلفية من صورة منتج.
طلب
يحتوي نص الطلب على الصورة (معرّف الموارد المنتظم أو البايت) ولون اختياري لاستخدامه بدلاً من الخلفية.
ملاحظات:
- حدِّد قيم الألوان بتنسيق RGB في النطاق [0-255].
- إذا لم تحدّد لون الخلفية، ستكون صورة شفافة بأربع قنوات RGBA.
في ما يلي مثال على بنية الطلب باستخدام معرّف الموارد المنتظم الخاص بالصورة وتحديد لون الخلفية باللون الأخضر (0 و255 و0):
POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}/generatedImages:removeProductImageBackground
{
"input_image": {
"image_uri": "https://services.google.com/fh/files/misc/abundance_intention_bath_salts.jpg"
},
"config": {
"background_color": {
"red": 0
"green": 255
"blue": 0
}
}
}
بدلاً من ذلك، يمكنك تنفيذ الوظيفة نفسها باستخدام وحدات بايت لصور أولية:
POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}/generatedImages:removeProductImageBackground
{
"input_image": {
"image_bytes": "b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00\xff'"
},
"config": {
"background_color": {
"red": 0
"green": 255
"blue": 0
}
}
}
الردّ
يمكنك توقّع ردّ مثل:
{
"generated_image": {
"image_bytes": "b'\x7d\x1b\x8f\x04\x5c\x9e\x23\xf0\x6a\xd1\x4b\x87\x0c\x3e\xa9\x21\xb5'"
"generation_time": "2025-05-13T00:06:54.754828Z"
},
}
أو إذا تم ضبط return_image_uri
على true
في output_config
، سيظهر على النحو التالي:
{
"generated_image": {
"uri": "https://lh3.googleusercontent.com/gps-generations/AI9LgEsYi83dcMKVV44i3vHDHzz_PJLuPyJHh9iX7IrsZ0ZIIRIS6SB4ovBmr0L9lZ1VNacZ5duwhcJ8Q8mXMYaIEArf2ieC2OuKEhRzVb-UxlkAUpitEpS5-M3Y3Ch3TGhQTZmBJXlsHLTuf0XcPwNHoNxJlgF0v_mQ6DIlPugZKC_WiYN2DNUkJivfr4WvifhMn5NaMKpDwpH4Acj-bdGNQ77M-8sj4SyEu3sHCF8ZtnMvF5DbGIYOJQ"
}
}
عيّنة تعليمات برمجية
في ما يلي نموذج رمز برمجي يوضّح كيفية إزالة خلفية صورة منتج:
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.productstudio.v1alpha.ImageServiceClient;
import com.google.shopping.merchant.productstudio.v1alpha.ImageServiceSettings;
import com.google.shopping.merchant.productstudio.v1alpha.InputImage;
import com.google.shopping.merchant.productstudio.v1alpha.OutputImageConfig;
import com.google.shopping.merchant.productstudio.v1alpha.RemoveImageBackgroundConfig;
import com.google.shopping.merchant.productstudio.v1alpha.RemoveProductImageBackgroundRequest;
import com.google.shopping.merchant.productstudio.v1alpha.RemoveProductImageBackgroundResponse;
import com.google.shopping.merchant.productstudio.v1alpha.RgbColor;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to create product images with the background removed. */
public class RemoveProductImageBackgroundSample {
private static String getName(String accountId) {
return String.format("accounts/%s", accountId);
}
public static void removeProductImageBackground(Config config, String imageUri) throws Exception {
// Obtains OAuth token based on the user's configuration.
GoogleCredentials credential = new Authenticator().authenticate();
ImageServiceSettings imageServiceSettings =
ImageServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
String name = getName(config.getAccountId().toString());
// Calls the API and catches and prints any network failures/errors.
try (ImageServiceClient imageServiceClient = ImageServiceClient.create(imageServiceSettings)) {
OutputImageConfig outputImageConfig =
// Set this field to false to return the image bytes in the response instead.
OutputImageConfig.newBuilder().setReturnImageUri(true).build();
InputImage inputImage =
InputImage.newBuilder()
// You can also use image bytes here instead of a URI.
.setImageUri(imageUri)
.build();
RemoveImageBackgroundConfig removeImageBackgroundConfig =
RemoveImageBackgroundConfig.newBuilder()
// Setting the background color to green. Don't set this field if you want the image
// to have a RGBA 4-channel transparent image as the background.
.setBackgroundColor(RgbColor.newBuilder().setRed(0).setGreen(255).setBlue(0))
.build();
RemoveProductImageBackgroundRequest request =
RemoveProductImageBackgroundRequest.newBuilder()
.setName(name)
.setOutputConfig(outputImageConfig)
.setInputImage(inputImage)
.setConfig(removeImageBackgroundConfig)
.build();
System.out.println("Sending RemoveProductImageBackground request: " + name);
RemoveProductImageBackgroundResponse response =
imageServiceClient.removeProductImageBackground(request);
System.out.println("Removed product image background response below:");
System.out.println(response);
} catch (Exception e) {
System.out.println("An error has occurred: ");
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
// Replace with your image URI.
String imageUri =
"https://services.google.com/fh/files/misc/abundance_intention_bath_salts.jpg";
removeProductImageBackground(config, imageUri);
}
}
تحسين دقة صورة منتج
يوضّح المثال كيفية تحسين دقة صورة منتجك.
طلب
يحتوي نص الطلب على الصورة (عنوان URI أو وحدات بايت). في ما يلي مثال على بنية الطلب باستخدام عنوان URI لصورة:
POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}/generatedImages:upscaleProductImage
{
"input_image": {
"image_uri": "https://services.google.com/fh/files/misc/ring_image_400_600.jpg"
}
}
بدلاً من ذلك، يمكنك اختيار استخدام وحدات البايت الخاصة بالصورة الأولية:
POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}/generatedImages:upscaleProductImage
{
"input_image": {
"image_bytes": "b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00\xff'"
}
}
الردّ
يمكنك توقّع تلقّي ردّ مثل
{
"generated_image": {
"image_bytes": "b'\x7d\x1b\x8f\x04\x5c\x9e\x23\xf0\x6a\xd1\x4b\x87\x0c\x3e\xa9\x21\xb5'"
"generation_time": "2025-05-13T00:06:54.754828Z"
},
}
أو إذا تم ضبط return_image_uri
على true
في output_config,
، سيظهر على النحو التالي:
{
"generated_image": {
"uri": "https://lh3.googleusercontent.com/gps-generations/AI9LgEvIFfK0YaLKvwvIBc9ItJtJGFE6hi25o6-N3Fz6YTw57pFghfIVlCGve7eyJcQkhoAqGAf8NDzW70qjwGOCuHhiouqF2nqxBwCcfDxZPkYRl3h7CIjyev9asJw7x-0g0V_xvurfowZJ0moXu98kmV01A3Thv2ZRlTAiOPYuEb8wnY7EeyD9l48lDdwJgZ4jqxtTgrRbwvpno4NICj9q830RzATiBHuJ_WUFQJiHOMAqbGyrQIWQTQ"
}
}
عيّنة تعليمات برمجية
في ما يلي نموذج رمز برمجي يوضّح كيفية تحسين دقة صورة منتج:
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.productstudio.v1alpha.ImageServiceClient;
import com.google.shopping.merchant.productstudio.v1alpha.ImageServiceSettings;
import com.google.shopping.merchant.productstudio.v1alpha.InputImage;
import com.google.shopping.merchant.productstudio.v1alpha.OutputImageConfig;
import com.google.shopping.merchant.productstudio.v1alpha.UpscaleProductImageRequest;
import com.google.shopping.merchant.productstudio.v1alpha.UpscaleProductImageResponse;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to create upscaled product images. */
public class UpscaleProductImageSample {
private static String getName(String accountId) {
return String.format("accounts/%s", accountId);
}
public static void upscaleProductImage(Config config, String imageUri) throws Exception {
// Obtains OAuth token based on the user's configuration.
GoogleCredentials credential = new Authenticator().authenticate();
ImageServiceSettings imageServiceSettings =
ImageServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
String name = getName(config.getAccountId().toString());
// Calls the API and catches and prints any network failures/errors.
try (ImageServiceClient imageServiceClient = ImageServiceClient.create(imageServiceSettings)) {
OutputImageConfig outputImageConfig =
// Set this field to false to return the image bytes in the response instead.
OutputImageConfig.newBuilder().setReturnImageUri(true).build();
InputImage inputImage =
InputImage.newBuilder()
// You can also use image bytes here instead of a URI.
.setImageUri(imageUri)
.build();
UpscaleProductImageRequest request =
UpscaleProductImageRequest.newBuilder()
.setName(name)
.setOutputConfig(outputImageConfig)
.setInputImage(inputImage)
.build();
System.out.println("Sending UpscaleProductImage request: " + name);
UpscaleProductImageResponse response = imageServiceClient.upscaleProductImage(request);
System.out.println("Upscaled product image response below:");
System.out.println(response);
} catch (Exception e) {
System.out.println("An error has occurred: ");
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
// Replace with your image URI.
String imageUri = "https://services.google.com/fh/files/misc/ring_image_400_600.jpg";
upscaleProductImage(config, imageUri);
}
}
الأخطاء والمشاكل الشائعة
في ما يلي بعض المشاكل الشائعة وحلولها.
"يجب إدخال صورة"
إذا تلقّيت رسالة الخطأ التالية، أضِف input_image
في نص الطلب:
Error message:
"error": {
"code": 400,
"message": "[input_image] Input image is required to generate product image background.",
"status": "INVALID_ARGUMENT",
...
}
"يجب ملء حقل واحد على الأقل من حقول الصورة"
إذا تلقّيت رسالة الخطأ التالية، املأ بشكل صحيح أحد الحقلين image_uri
أو image_bytes
فقط في نص الطلب.
Error message:
"error": {
"code": 400,
"message": "[input_image.image] At least one field of image is required to generate product image background.",
"status": "INVALID_ARGUMENT",
...
}
على سبيل المثال، سيؤدي نشر هذا المحتوى إلى حدوث خطأ.
POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}/generatedImages:generateProductImageBackground
{
"config": {
"product_description": "a jar"
"background_description": "sitting on a cracked stone surface surrounded by a cherry blossom tree and pink and white flowers in the background, high resolution, product photography, strong shadows and lights, creative"
}
}
"يجب توفير ملف إعداد لإنشاء خلفية صورة المنتج"
إذا ظهر لك هذا الخطأ، أضِف config
في نص الطلب واملأ الحقلين product_description
وbackground_description
:
Error message:
"error": {
"code": 400,
"message": "[config] Config is required to generate product image background.",
"status": "INVALID_ARGUMENT",
...
}
على سبيل المثال، سيؤدي نشر هذا المحتوى إلى حدوث خطأ.
POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}/generatedImages:generateProductImageBackground
{
"input_image": {
"image_uri": "https://services.google.com/fh/files/misc/abundance_intention_bath_salts.jpg"
}
}
"يجب توفير وصف المنتج لإنشاء خلفية صورة المنتج"
في حال تلقّيت إحدى رسالتَي الخطأ التاليتَين، احرص على ملء كل من product_description
وbackground_description
في config
:
في ما يلي مثال على عدم توفّر وصف للمنتج:
Error message:
"error": {
"code": 400,
"message": "[config.product_description] Product description is required to generate product image background.",
"status": "INVALID_ARGUMENT",
...
}
في ما يلي مثال على عدم توفّر وصف للخلفية:
Error message:
"error": {
"code": 400,
"message": "[config.background_description] Background description is required to generate product image background.",
"status": "INVALID_ARGUMENT",
...
}
على سبيل المثال، سيؤدي تنفيذ الطلب التالي إلى حدوث خطأ.
POST https://merchantapi.googleapis.com/productstudio/v1alpha/accounts/{ACCOUNT_ID}/generatedImages:generateProductImageBackground
{
"input_image": {
"image_uri": "https://services.google.com/fh/files/misc/abundance_intention_bath_salts.jpg"
},
"config": {
}
}