App Engine memberikan kemampuan untuk memanipulasi data gambar menggunakan layanan Gambar khusus. Layanan Gambar dapat memanipulasi gambar, menggabungkan beberapa gambar menjadi satu gambar, mengubah format gambar, menyediakan metadata gambar seperti format, lebar, tinggi, dan histogram nilai warna.
Java 8 di App Engine mendukung class manipulasi gambar native Java seperti AWT dan Java2D bersamaan Image API App Engine.
Layanan Gambar dapat menerima data gambar langsung dari aplikasi, atau dapat menggunakan nilai Cloud Storage. (Layanan Gambar juga dapat menggunakan nilai Cloud Blobstore, tetapi sebaiknya gunakan Cloud Storage.)
Gambar yang disimpan di Cloud Storage dan Cloud Blobstore dapat mencapai nilai maksimum yang diizinkan untuk masing-masing layanan. Gambar yang ditransformasi akan ditampilkan langsung ke aplikasi, dan ukurannya harus kurang dari 32 megabyte.
Bucket Cloud Storage harus menggunakan Daftar Kontrol Akses yang mendetail agar Images API dapat berfungsi. Untuk bucket yang telah dikonfigurasi untuk akses level bucket yang seragam, Images API tidak akan dapat mengambil gambar di bucket tersebut dan menampilkan pesan error TransformationError
. Jika bucket Anda dikonfigurasi dengan cara ini, Anda dapat menonaktifkan akses level bucket yang seragam.
Mentransformasi gambar di Java 8
Image service API memungkinkan Anda menerapkan transformasi ke gambar, menggunakan layanan,
bukan melakukan pemrosesan gambar di server aplikasi. Aplikasi
menyiapkan objek Image
dengan data gambar yang akan diubah, dan objek
Transform
dengan petunjuk tentang cara mengubah gambar. Aplikasi akan mendapatkan
objek ImagesService
, lalu memanggil metode applyTransform()
dengan
objek Image
dan Transform
. Metode ini akan menampilkan objek Image
dari
gambar yang diubah.
Aplikasi ini mendapatkan instance ImagesService
, Image
, dan Transform
menggunakan
ImagesServiceFactory
.
Beberapa transformasi dapat digabungkan menjadi satu tindakan menggunakan
instance CompositeTransform
. Lihat referensi
image API.
Transformasi gambar yang tersedia
Layanan Gambar dapat mengubah ukuran, memutar, membalik, dan memangkas gambar, serta meningkatkan kualitas foto. Layanan ini juga dapat menggabungkan beberapa gambar menjadi satu gambar.
Ubah ukuran
Anda dapat mengubah ukuran gambar dengan tetap mempertahankan rasio aspek yang sama. Lebar atau tinggi gambar yang diubah ukurannya tidak boleh melebihi 4.000 piksel.
Rotasi
Anda dapat memutar gambar dalam kelipatan 90 derajat.
Balik secara horizontal
Anda dapat membalik gambar secara horizontal.
Balik secara vertikal
Anda dapat membalik gambar secara vertikal.
Crop
Anda dapat memangkas gambar dengan kotak pembatas yang diberikan.
Saya Lagi Beruntung
Transformasi "Saya Lagi Beruntung" meningkatkan warna gelap dan cerah dalam gambar serta menyesuaikan warna dan mengoptimalkan kontras.
Format gambar
Layanan menerima data gambar dalam format JPEG, PNG, WEBP, GIF (termasuk GIF animasi), BMP, TIFF, dan ICO. Gambar yang diubah dapat ditampilkan dalam format JPEG, WEBP, dan PNG.
Jika format input dan format output berbeda, layanan akan mengonversi data input menjadi format output sebelum melakukan transformasi.
Mentransformasi gambar
Layanan Gambar dapat menggunakan nilai dari Google Cloud Storage atau Blobstore sebagai sumber gambar untuk sebuah transformasi. Ada dua cara untuk mentransformasi gambar:
- Dengan menggunakan class ImagesServiceFactory(), Anda dapat melakukan transformasi gambar sederhana, seperti memangkas, membalik, dan memutar.
- Dengan menggunakan getServingUrl(), Anda dapat mengubah ukuran dan memangkas gambar secara dinamis, sehingga Anda tidak perlu menyimpan ukuran gambar yang berbeda di server. Metode ini menampilkan URL yang menyajikan gambar, dan transformasi ke gambar dienkode dalam URL ini. Fungsi ini mengasumsikan bahwa gambar tidak berubah; jika dimodifikasi setelah mendapatkan URL, Anda mungkin mendapatkan hasil yang tak terduga dari penggunaan URL.
Menggunakan Class ImagesServiceFactory()
Anda dapat mentransformasi gambar dari Cloud Storage atau Blobstore jika ukuran gambar lebih kecil dari ukuran maksimum yang diizinkan oleh Cloud Storage atau Blobstore. Perhatikan bahwa hasil transformasi ditampilkan langsung ke aplikasi, dan tidak boleh melebihi batas respons API sebesar 32 megabyte.
Untuk mentransformasi gambar dari Cloud Storage atau Blobstore di Java 8, Anda membuat objek Image
dengan memanggil metode statis ImagesServiceFactory.makeImageFromBlob()
dan meneruskan nilai blobstore.BlobKey
. Bagian lainnya dari API berperilaku seperti yang diharapkan. Metode applyTransform()
menampilkan hasil transformasi, atau menampilkan ImagesServiceFailureException
jika hasilnya lebih besar dari ukuran maksimum 32 megabyte.
Menggunakan getServingUrl()
Metode getServingUrl() memungkinkan Anda membuat URL tetap dan khusus untuk gambar yang disimpan di Cloud Storage atau Blobstore. Contoh:
URL yang dihasilkan menggunakan infrastruktur penayangan gambar yang sangat dioptimalkan dan terpisah dari aplikasi Anda. Karena gambar ditayangkan secara terpisah dari aplikasi Anda, gambar tersebut tidak menimbulkan beban dan bisa sangat hemat biaya. URL yang ditampilkan oleh metode ini selalu dapat diakses secara publik, tetapi tidak dapat ditebak.
Jika Anda ingin berhenti menyajikan URL, hapus menggunakan metode deleteServingUrl().
Metode ini menampilkan URL yang dienkode dengan argumen pemangkasan dan ukuran yang ditentukan. Jika Anda tidak menentukan argumen apa pun, metode akan menampilkan URL default untuk gambar, misalnya:
http://lhx.ggpht.com/randomStringImageId
Anda dapat mengubah ukuran dan memangkas gambar secara dinamis dengan menentukan argumen dalam URL. Argumen yang tersedia adalah:
=sxx
di manaxx
adalah bilangan bulat dengan rentang dari 0–2560 yang mewakili panjang sisi terpanjang gambar, dalam piksel. Misalnya, menambahkan=s32
akan mengubah ukuran gambar sehingga dimensi terpanjangnya adalah 32 piksel.=sxx-c
di mana xx adalah bilangan bulat dengan rentang dari 0–2560 yang merepresentasikan ukuran gambar yang dipangkas dalam piksel, dan-c
akan memberi tahu sistem untuk memangkas gambar.
# Resize the image to 32 pixels (aspect-ratio preserved) http://lhx.ggpht.com/randomStringImageId=s32 # Crop the image to 32 pixels http://lhx.ggpht.com/randomStringImageId=s32-c
Gambar dan server pengembangan
Server pengembangan menggunakan komputer lokal Anda untuk menjalankan kemampuan layanan Gambar.
Server pengembangan Java menggunakan framework
ImageIO
untuk menyimulasikan layanan Gambar. Fitur peningkatan (kualitas) foto "Saya Lagi Beruntung"
tidak didukung. Format gambar WEBP hanya didukung jika plugin decoder
yang sesuai telah diinstal. Misalnya, plugin dekoder
Java VP8
dapat digunakan. Perhatikan bahwa metode getServingUrl
tidak tersedia di
server pengembangan.
Catatan tentang penghapusan
Untuk berhenti menyajikan gambar yang disimpan di Cloud Storage atau Blobstore, panggil metode deleteServingUrl().
Hindari menghapus gambar secara langsung di Cloud Storage atau Blobstore karena hal ini dapat membuat gambar tetap dapat diakses melalui URL penayangan.
URL penayangan akan berhenti berfungsi jika aplikasi yang membuatnya dinonaktifkan atau dihapus, meskipun gambar yang mendasarinya tetap tersedia.
Kuota, batas, dan harga
Saat ini, tidak ada biaya tambahan yang timbul dari penggunaan Images API. Lihat halaman harga App Engine.
Setiap permintaan Images API diperhitungkan dalam kuota Panggilan API Manipulasi Gambar . Aplikasi dapat melakukan beberapa transformasi gambar dalam satu panggilan API.
Data yang dikirim ke layanan Gambar akan mengurangi kuota Data yang Dikirim ke (Images) API. Data yang diterima dari layanan Gambar akan mengurangi kuota Data yang Diterima dari (Images) API.
Setiap transformasi gambar diperhitungkan dalam kuota Transformasi yang dilaksanakan.
Untuk mengetahui informasi selengkapnya, lihat Kuota. Anda dapat melihat penggunaan kuota aplikasi saat ini dengan membuka tab Detail Kuota konsol Google Cloud.
Selain kuota, batas berikut berlaku untuk penggunaan layanan Gambar:
Batas | Jumlah |
---|---|
ukuran data maksimum gambar yang dikirim ke layanan | 32 megabyte |
ukuran data maksimum gambar yang diterima dari layanan | 32 megabyte |
ukuran maksimum gambar yang dikirim atau diterima dari layanan | 50 megapiksel |