All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.aws.sdk.kotlin.services.rekognition.model.Image.kt Maven / Gradle / Ivy

// Code generated by smithy-kotlin-codegen. DO NOT EDIT!

package aws.sdk.kotlin.services.rekognition.model

import aws.smithy.kotlin.runtime.SdkDsl

/**
 * Provides the input image either as bytes or an S3 object.
 *
 * You pass image bytes to an Amazon Rekognition API operation by using the `Bytes` property. For example, you would use the `Bytes` property to pass an image loaded from a local file system. Image bytes passed by using the `Bytes` property must be base64-encoded. Your code may not need to encode image bytes if you are using an AWS SDK to call Amazon Rekognition API operations.
 *
 * For more information, see Analyzing an Image Loaded from a Local File System in the Amazon Rekognition Developer Guide.
 *
 *  You pass images stored in an S3 bucket to an Amazon Rekognition API operation by using the `S3Object` property. Images stored in an S3 bucket do not need to be base64-encoded.
 *
 * The region for the S3 bucket containing the S3 object must match the region you use for Amazon Rekognition operations.
 *
 * If you use the AWS CLI to call Amazon Rekognition operations, passing image bytes using the Bytes property is not supported. You must first upload the image to an Amazon S3 bucket and then call the operation using the S3Object property.
 *
 * For Amazon Rekognition to process an S3 object, the user must have permission to access the S3 object. For more information, see How Amazon Rekognition works with IAM in the Amazon Rekognition Developer Guide.
 */
public class Image private constructor(builder: Builder) {
    /**
     * Blob of image bytes up to 5 MBs. Note that the maximum image size you can pass to `DetectCustomLabels` is 4MB.
     */
    public val bytes: kotlin.ByteArray? = builder.bytes
    /**
     * Identifies an S3 object as the image source.
     */
    public val s3Object: aws.sdk.kotlin.services.rekognition.model.S3Object? = builder.s3Object

    public companion object {
        public operator fun invoke(block: Builder.() -> kotlin.Unit): aws.sdk.kotlin.services.rekognition.model.Image = Builder().apply(block).build()
    }

    override fun toString(): kotlin.String = buildString {
        append("Image(")
        append("bytes=$bytes,")
        append("s3Object=$s3Object")
        append(")")
    }

    override fun hashCode(): kotlin.Int {
        var result = bytes?.contentHashCode() ?: 0
        result = 31 * result + (s3Object?.hashCode() ?: 0)
        return result
    }

    override fun equals(other: kotlin.Any?): kotlin.Boolean {
        if (this === other) return true
        if (other == null || this::class != other::class) return false

        other as Image

        if (bytes != null) {
            if (other.bytes == null) return false
            if (!bytes.contentEquals(other.bytes)) return false
        } else if (other.bytes != null) return false
        if (s3Object != other.s3Object) return false

        return true
    }

    public inline fun copy(block: Builder.() -> kotlin.Unit = {}): aws.sdk.kotlin.services.rekognition.model.Image = Builder(this).apply(block).build()

    @SdkDsl
    public class Builder {
        /**
         * Blob of image bytes up to 5 MBs. Note that the maximum image size you can pass to `DetectCustomLabels` is 4MB.
         */
        public var bytes: kotlin.ByteArray? = null
        /**
         * Identifies an S3 object as the image source.
         */
        public var s3Object: aws.sdk.kotlin.services.rekognition.model.S3Object? = null

        @PublishedApi
        internal constructor()
        @PublishedApi
        internal constructor(x: aws.sdk.kotlin.services.rekognition.model.Image) : this() {
            this.bytes = x.bytes
            this.s3Object = x.s3Object
        }

        @PublishedApi
        internal fun build(): aws.sdk.kotlin.services.rekognition.model.Image = Image(this)

        /**
         * construct an [aws.sdk.kotlin.services.rekognition.model.S3Object] inside the given [block]
         */
        public fun s3Object(block: aws.sdk.kotlin.services.rekognition.model.S3Object.Builder.() -> kotlin.Unit) {
            this.s3Object = aws.sdk.kotlin.services.rekognition.model.S3Object.invoke(block)
        }

        internal fun correctErrors(): Builder {
            return this
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy