Updated on 2024-10-24 GMT+08:00

Using Image Processing with APIs

Process

You can call OBS Representational State Transfer (REST) APIs to access image processing. In the REST architectural style, resources on a network are identified by Uniform Resource Identifiers (URIs) and applications on clients locate resources using Uniform Resource Locators (URLs). The URL is in the https://Endpoint/uri format. By putting a URL that complies with the command rules of image processing in a browser, you can get the new image after processing.

Figure 1 shows the flowchart of using image processing with REST APIs.

Figure 1 Flowchart of using image processing with REST APIs

Creating an Account and Enabling OBS

Before using image processing, you must have a cloud service account and enable OBS. Once OBS is enabled, image processing is available for use. To use OBS properly, make sure that you have sufficient account balance or you have a valid payment method. If you have already enabled OBS and you can use it properly, skip this section.

  1. Visit the Huawei Cloud official website.
  2. Click Sign Up in the upper right corner.
  3. Complete the account creation as instructed.

    After the creation is complete, you will be navigated to your information page.

  4. Create an OBS bucket, so that you can use image processing properly.

Uploading an image

You can upload images using OBS Console, OBS Browser+, or REST APIs.

For details, see Uploading an Object.

Skip this section if the image to be processed already exists in your bucket.

If you want to use a user-defined domain name for image processing, you need to grant anonymous users the read permission for the image. For more information, see Granting All Accounts the Read Permission for Certain Objects.

Processing the Image

This section describes the URL constitution to process images using REST APIs. Once you have enabled OBS successfully, you can call REST APIs to process images simply by putting a URL that complies with the command rules of image processing in a browser.

URL Composition

A URL consists of the OBS domain name, bucket name, the original image name, and processing command or style name.

Access with Commands

URL format: https://bucketName.endpoint/objectName?x-image-process=image/commands

  • endpoint represents the endpoint address of the region where the bucket is located. You can obtain the endpoint from the bucket's basic information. For more information, see Regions and Endpoints.
  • bucketName represents the name of the bucket that accommodates the image to be processed on OBS.
  • objectName represents the name of the original image stored in the bucketName bucket. The name suffix must be supported by image processing.
  • commands represents the processing commands. Three types of delimiters can be used between commands or command parameters. If no commands are specified, the original image will be returned.

Example URL: https://hw-image-demo.obs.ap-southeast-1.myhuaweicloud.com/example.jpg?x-image-process=image/crop,x_100,y_50

  • Delimiters

Delimiters are used to separate one field from another in the commands in a URL. For details, see Table 1.

Table 1 Delimiters

Name

Character

Sequence

Description

Parameter delimiter

_

Fixed

Delimiter between a parameter and its value

Command delimiter

,

Irrelevant

Delimiter between command parameters

Pipe delimiter

/

Relevant

Delimiter between two processing commands. See Pipes.

  • Pipes

If an image needs to be processed by multiple operations (for example, it needs to be cropped first and then resized), the operation commands must be separated with pipe delimiters (/). The operations (also pipes) will be executed sequentially from left to right.

For example, https://image-demo.obs.ap-southeast-1.myhuaweicloud.com/example.jpg?x-image-process=image/resize,w_100,h_100/quality,q_80 are two pipes executed from left to right. The output of the left command becomes the input of the right command.

Access with a Style Name

URL format: https://bucketName.endpoint/objectName?x-image-process=style/stylename

  • endpoint represents the endpoint address of the region where the bucket is located. You can obtain the endpoint from the bucket's basic information. For more information, see Regions and Endpoints.
  • bucketName is the bucket name on OBS.
  • objectName represents the name of the original image stored in the bucketName bucket. The name suffix must be supported by image processing.
  • stylename is the name of an existing style in the bucketName bucket on OBS Console. At present, REST APIs cannot be used to perform operations related to styles, such as creating, changing, or deleting styles.

Example URL: https://image-demo.obs.obs.ap-southeast-1.myhuaweicloud.com/example.jpg?x-image-process=style/stylename