Resimleri oluştur

Image API, Product Studio alt API'sinin bir parçasıdır. Ürün resimleri oluşturmak ve optimize etmek için Google Product Studio (GPS) API'nin üretken yapay zeka araçlarından yararlanır. Bu sayede müşteri etkileşimini ve dönüşümü artırabilirsiniz.

API'yi kullanarak ne oluşturabilirsiniz?

  • Sağlanan ürün bilgileri ve yazılı isteme göre yapay zeka tarafından üretilmiş arka planlara sahip ürün resimleri
  • Orijinal resmin arka planı kaldırılmış ürün resimleri
  • Orijinal resmin çözünürlüğünün iyileştirildiği ürün resimleri

Resim Üretme arka planı oluşturma

GenerateProductImageBackground yöntemi, orijinal ürün resminizi ve arka planı ayrıntılı olarak açıklayan bir yazılı istemi kullanarak yapay zekayla üretilmiş arka planlara sahip ürün resimleri oluşturabilir.

API'nin kabul ettiği dosya biçimleri:

  • Ürün resmi: Aşağıdakilerden biri olabilir:
    • Ürün resmine işaret eden bir URI (ör. {"image_uri": "https://my-store.com/img/1.png"})
    • Ham resim baytları (ör. {"image_bytes": b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01'})
  • İstem: Oluşturulacak arka planı belirten bir dize:
    • product_description: Ürünün açıklaması.
    • background_description: İstediğiniz arka planın açıklaması.

Görsel arka planını kaldırma

RemoveProductImageBackground yöntemi, orijinal ürün resminizden arka planı kaldırılmış yapay görüntüler oluşturabilir.

API'nin kabul ettiği dosya biçimleri:

  • Ürün resmi: Aşağıdakilerden biri olabilir:
    • Ürün resmine yönlendiren bir URI (ör. {"image_uri": "https://my-store.com/img/1.png"})
    • Ham resim baytları (ör. {"image_bytes": b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01'})
  • Arka plan rengi: Kaldırma işleminden sonra arka planın rengi, RGB biçiminde verilir. Renk belirtilmezse arka plan, RGBA 4 kanallı şeffaf bir resim olur.

Resim çözünürlüğünü artırma

UpscaleProductImage yöntemi, orijinal ürün resminizin çözünürlüğünün artırıldığı yapay görüntüler oluşturabilir.

API, ürün resmi kabul eder. Aşağıdakilerden biri olabilir:

  • Ürün resmine yönlendiren bir URI (ör. {"image_uri": "https://my-store.com/img/1.png"})
  • Ham resim baytları (ör. {"image_bytes": "image_bytes"})

İstemci kitaplıklarını kullanma

İsteklerinizi göndermek için istemci kitaplıklarını kullanmanızı öneririz. Diliniz için desteklenen bir istemci kitaplığı yoksa kitaplık dosyalarını doğrudan size (e-posta veya paylaşılan Drive klasöründe) sağlayabiliriz. Böylece, dosyaları örneğin Maven projenize yükleyebilirsiniz.

Örnekler

Aşağıdaki örneklerde, ürün resimleri oluşturmak veya optimize etmek için API kullanılmaktadır.

Ürün resmi için arka plan oluşturma

Örnekte, seçtiğiniz arka planla nasıl ürün resmi oluşturacağınız gösterilmektedir.

İstek

İstek gövdesi, resmi (URI veya bayt) ve arka plan oluşturma istemini içerir. Aşağıda, resim URI'si kullanan istek yapısına bir örnek verilmiştir:

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"
   }
}

Alternatif olarak, ham resim baytlarını kullanabilirsiniz:

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"
   }
}

Yanıt

Şöyle bir yanıt alabilirsiniz:

{
  "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, output_config, içinde true olarak ayarlanırsa şu şekilde görünür:

{
  "generated_image": {
    "uri": "https://lh3.googleusercontent.com/gps-generations/AI9LgEvIFfK0YaLKvwvIBc9ItJtJGFE6hi25o6-N3Fz6YTw57pFghfIVlCGve7eyJcQkhoAqGAf8NDzW70qjwGOCuHhiouqF2nqxBwCcfDxZPkYRl3h7CIjyev9asJw7x-0g0V_xvurfowZJ0moXu98kmV01A3Thv2ZRlTAiOPYuEb8wnY7EeyD9l48lDdwJgZ4jqxtTgrRbwvpno4NICj9q830RzATiBHuJ_WUFQJiHOMAqbGyrQIWQTQ",
    "generation_time": "2025-05-13T00:06:54.754828Z"
  }
}

Kod örneği

Ürün resmi arka planının nasıl oluşturulacağını gösteren bir kod örneğini aşağıda bulabilirsiniz:

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);
  }
}

Python

from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_productstudio_v1alpha import GenerateImageBackgroundConfig
from google.shopping.merchant_productstudio_v1alpha import GenerateProductImageBackgroundRequest
from google.shopping.merchant_productstudio_v1alpha import ImageServiceClient
from google.shopping.merchant_productstudio_v1alpha import InputImage
from google.shopping.merchant_productstudio_v1alpha import OutputImageConfig


# Gets the merchant account ID from the user's configuration.
_ACCOUNT = configuration.Configuration().read_merchant_info()
# The name of the account to which the request is sent.
# Format: accounts/{account}
_NAME = f"accounts/{_ACCOUNT}"


def generate_product_image_background(image_uri: str) -> None:
  """Generates a product image with a custom background.

  Args:
    image_uri: The URI of the input image.
  """
  # Gets OAuth Credentials.
  credentials = generate_user_credentials.main()

  # Creates a client.
  client = ImageServiceClient(credentials=credentials)

  # Creates the output config.
  # Set `return_image_uri` to False to return the image bytes in the response.
  output_config = OutputImageConfig(return_image_uri=True)

  # Creates the input image.
  # You can also use image bytes here instead of a URI.
  input_image = InputImage(image_uri=image_uri)

  # Creates the generate image background config.
  generate_image_background_config = GenerateImageBackgroundConfig(
      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"
      ),
  )

  # Creates the request.
  request = GenerateProductImageBackgroundRequest(
      name=_NAME,
      output_config=output_config,
      input_image=input_image,
      config=generate_image_background_config,
  )

  # Makes the request and catches and prints any error messages.
  try:
    print(f"Sending GenerateProductImageBackground request: {_NAME}")
    response = client.generate_product_image_background(request=request)
    print("Generated product image background response below:")
    print(response)
  except RuntimeError as e:
    print("Request failed.")
    print(e)


if __name__ == "__main__":
  # The URI of the image to use as the base for the generation.
  # Replace with your image URI.
  _IMAGE_URI = (
      "https://services.google.com/fh/files/misc/abundance_intention_bath_salts.jpg"
  )
  generate_product_image_background(_IMAGE_URI)


Ürün resminden arka planı kaldırma

Örnekte, ürün resminden arka planın nasıl kaldırılacağı gösterilmektedir.

İstek

İstek gövdesi, resmi (URI veya bayt) ve isteğe bağlı olarak arka planın değiştirileceği rengi içerir.

Notlar:

  • Renk değerlerini [0-255] aralığında RGB biçiminde belirtin.
  • Arka plan rengi belirtmezseniz RGBA 4 kanallı şeffaf bir resim olur.

Aşağıda, resim URI'si kullanan ve arka planı yeşil (0, 255, 0) olarak ayarlayan istek yapısı örneği verilmiştir:

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
    }
   }
}

Alternatif olarak, ham resim baytlarını kullanarak aynı işlevi gerçekleştirebilirsiniz:

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
    }
   }
}
Yanıt

Şöyle bir yanıt alabilirsiniz:

{
  "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"
  },
}

output_config politikasında return_image_uri, true değerine ayarlanırsa şu şekilde görünür:

{
  "generated_image": {
    "uri": "https://lh3.googleusercontent.com/gps-generations/AI9LgEsYi83dcMKVV44i3vHDHzz_PJLuPyJHh9iX7IrsZ0ZIIRIS6SB4ovBmr0L9lZ1VNacZ5duwhcJ8Q8mXMYaIEArf2ieC2OuKEhRzVb-UxlkAUpitEpS5-M3Y3Ch3TGhQTZmBJXlsHLTuf0XcPwNHoNxJlgF0v_mQ6DIlPugZKC_WiYN2DNUkJivfr4WvifhMn5NaMKpDwpH4Acj-bdGNQ77M-8sj4SyEu3sHCF8ZtnMvF5DbGIYOJQ"
  }
}

Kod örneği

Ürün resmi arka planının nasıl kaldırılacağını gösteren bir kod örneğini aşağıda bulabilirsiniz:

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);
  }
}

Python

from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_productstudio_v1alpha import ImageServiceClient
from google.shopping.merchant_productstudio_v1alpha import InputImage
from google.shopping.merchant_productstudio_v1alpha import OutputImageConfig
from google.shopping.merchant_productstudio_v1alpha import RemoveImageBackgroundConfig
from google.shopping.merchant_productstudio_v1alpha import RemoveProductImageBackgroundRequest
from google.shopping.merchant_productstudio_v1alpha import RgbColor

# Gets the merchant account ID from the user's configuration.
_ACCOUNT = configuration.Configuration().read_merchant_info()
# The name of the account to which the request is sent.
# Format: accounts/{account}
_NAME = f"accounts/{_ACCOUNT}"


def remove_product_image_background(image_uri: str) -> None:
  """Removes the background from a product image.

  Args:
    image_uri: The URI of the input image.
  """
  # Gets OAuth Credentials.
  credentials = generate_user_credentials.main()

  # Creates a client.
  client = ImageServiceClient(credentials=credentials)

  # Creates the output config.
  # Set `return_image_uri` to False to return the image bytes in the response.
  output_config = OutputImageConfig(return_image_uri=True)

  # Creates the input image.
  # You can also use image bytes here instead of a URI.
  input_image = InputImage(image_uri=image_uri)

  # Creates the remove image background config.
  # 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.
  remove_image_background_config = RemoveImageBackgroundConfig(
      background_color=RgbColor(red=0, green=255, blue=0)
  )

  # Creates the request.
  request = RemoveProductImageBackgroundRequest(
      name=_NAME,
      output_config=output_config,
      input_image=input_image,
      config=remove_image_background_config,
  )

  # Makes the request and catches and prints any error messages.
  try:
    print(f"Sending RemoveProductImageBackground request: {_NAME}")
    response = client.remove_product_image_background(request=request)
    print("Removed product image background response below:")
    print(response)
  except RuntimeError as e:
    print("Request failed.")
    print(e)


if __name__ == "__main__":
  # The URI of the image to remove the background from.
  # Replace with your image URI.
  _IMAGE_URI = (
      "https://services.google.com/fh/files/misc/abundance_intention_bath_salts.jpg"
  )
  remove_product_image_background(_IMAGE_URI)


Ürün resminin çözünürlüğünü artırma

Örnekte, ürün resminizin kalitesini ve boyutunu nasıl artıracağınız gösterilmektedir.

İstek

İstek gövdesi, resmi (URI veya bayt) içerir. Resim URI'si kullanan istek yapısı örneğini aşağıda bulabilirsiniz:

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"
   }
}

Alternatif olarak, ham resim baytlarını kullanmayı da tercih edebilirsiniz:

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'"
   }
}
Yanıt

Şöyle bir yanıt alabilirsiniz:

{
  "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, output_config, içinde true olarak ayarlanırsa şu şekilde görünür:

{
  "generated_image": {
    "uri": "https://lh3.googleusercontent.com/gps-generations/AI9LgEvIFfK0YaLKvwvIBc9ItJtJGFE6hi25o6-N3Fz6YTw57pFghfIVlCGve7eyJcQkhoAqGAf8NDzW70qjwGOCuHhiouqF2nqxBwCcfDxZPkYRl3h7CIjyev9asJw7x-0g0V_xvurfowZJ0moXu98kmV01A3Thv2ZRlTAiOPYuEb8wnY7EeyD9l48lDdwJgZ4jqxtTgrRbwvpno4NICj9q830RzATiBHuJ_WUFQJiHOMAqbGyrQIWQTQ"
  }
}

Kod örneği

Ürün resminin ölçeğini nasıl büyüteceğinizi gösteren bir kod örneğini aşağıda bulabilirsiniz:

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);
  }
}

Python

from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_productstudio_v1alpha import ImageServiceClient
from google.shopping.merchant_productstudio_v1alpha import InputImage
from google.shopping.merchant_productstudio_v1alpha import OutputImageConfig
from google.shopping.merchant_productstudio_v1alpha import UpscaleProductImageRequest

# Gets the merchant account ID from the user's configuration.
_ACCOUNT = configuration.Configuration().read_merchant_info()
# The name of the account to which the request is sent.
# Format: accounts/{account}
_NAME = f"accounts/{_ACCOUNT}"


def upscale_product_image(image_uri: str) -> None:
  """Upscales a product image.

  Args:
    image_uri: The URI of the input image.
  """
  # Gets OAuth Credentials.
  credentials = generate_user_credentials.main()

  # Creates a client.
  client = ImageServiceClient(credentials=credentials)

  # Creates the output config.
  # Set `return_image_uri` to False to return the image bytes in the response.
  output_config = OutputImageConfig(return_image_uri=True)

  # Creates the input image.
  # You can also use image bytes here instead of a URI.
  input_image = InputImage(image_uri=image_uri)

  # Creates the request.
  request = UpscaleProductImageRequest(
      name=_NAME, output_config=output_config, input_image=input_image
  )

  # Makes the request and catches and prints any error messages.
  try:
    print(f"Sending UpscaleProductImage request: {_NAME}")
    response = client.upscale_product_image(request=request)
    print("Upscaled product image response below:")
    print(response)
  except RuntimeError as e:
    print("Request failed.")
    print(e)


if __name__ == "__main__":
  # The URI of the image to upscale.
  # Replace with your image URI.
  _IMAGE_URI = "https://services.google.com/fh/files/misc/ring_image_400_600.jpg"
  upscale_product_image(_IMAGE_URI)


Sık karşılaşılan hatalar ve sorunlar

Sık karşılaşılan birkaç sorun ve çözümleri aşağıda açıklanmıştır.

"Giriş resmi gerekli"

Aşağıdaki hata mesajını alırsanız istek gövdesine input_image ekleyin:

Error message:
"error": {
    "code": 400,
    "message": "[input_image] Input image is required to generate product image background.",
    "status": "INVALID_ARGUMENT",
 ...
}

"En az bir resim alanı zorunludur"

Aşağıdaki hata mesajını alırsanız istek gövdesinde image_uri veya image_bytes alanlarından yalnızca birini doğru şekilde doldurun.

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",
 ...
}

Örneğin, aşağıdaki istek gönderildiğinde hata oluşur.

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"
   }
}

"Ürün resmi arka planı oluşturmak için yapılandırma gerekiyor"

Bu hatayı alırsanız istek gövdesine config ekleyin ve hem product_description hem de background_description değerlerini doldurun:

Error message:
"error": {
    "code": 400,
    "message": "[config] Config is required to generate product image background.",
    "status": "INVALID_ARGUMENT",
 ...
}

Örneğin, bu isteğin yayınlanması hataya neden olur.

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"
   }
}

"Ürün resmi arka planı oluşturmak için ürün açıklaması gereklidir"

Aşağıdaki iki hata mesajından birini alırsanız config içinde hem product_description hem de background_description alanlarını doldurduğunuzdan emin olun:

Eksik ürün açıklaması örneği:

Error message:
"error": {
    "code": 400,
    "message": "[config.product_description] Product description is required to generate product image background.",
    "status": "INVALID_ARGUMENT",
 ...
}

Aşağıda, eksik arka plan açıklamasına bir örnek verilmiştir:

Error message:
"error": {
    "code": 400,
    "message": "[config.background_description] Background description is required to generate product image background.",
    "status": "INVALID_ARGUMENT",
 ...
}

Örneğin, aşağıdaki isteği çalıştırmak hataya neden olur.

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": {
   }
}