Tutorial ini menunjukkan penggunaan fungsi Cloud Run, Cloud Vision API, dan ImageMagick untuk mendeteksi dan memburamkan gambar menyinggung yang diupload ke bucket Cloud Storage.
Tujuan
- Men-deploy fungsi Cloud Run Latar Belakang yang dipicu penyimpanan.
- Gunakan Vision API untuk mendeteksi konten kekerasan atau khusus dewasa.
- Gunakan ImageMagick untuk memburamkan gambar yang menyinggung.
- Uji fungsi dengan mengupload gambar zombie pemakan daging.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloud yang dapat ditagih berikut:
- Cloud Run functions
- Cloud Storage
- Cloud Vision
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Build, Cloud Storage, and Cloud Vision APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Build, Cloud Storage, and Cloud Vision APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Siapkan lingkungan pengembangan Anda.
Jika Anda sudah menginstal gcloud CLI, update dengan menjalankan perintah berikut:
gcloud components update
Memvisualisasikan aliran data.
Alur data dalam aplikasi tutorial ImageMagick melibatkan beberapa langkah:
- Gambar diupload ke bucket Cloud Storage.
- Fungsi ini menganalisis gambar menggunakan Vision API.
- Jika konten kekerasan atau khusus dewasa terdeteksi, fungsi ini akan menggunakan ImageMagick untuk memburamkan gambar.
- Gambar yang diburamkan diupload ke bucket Cloud Storage lain untuk digunakan.
Menyiapkan aplikasi
Buat bucket Cloud Storage untuk mengupload gambar, dengan
YOUR_INPUT_BUCKET_NAME
nama bucket yang unik secara global:gcloud storage buckets create gs://YOUR_INPUT_BUCKET_NAME
Buat bucket Cloud Storage untuk menerima gambar yang diburamkan, dengan
YOUR_OUTPUT_BUCKET_NAME
adalah nama bucket yang unik secara global:gcloud storage buckets create gs://YOUR_OUTPUT_BUCKET_NAME
Clone repositori aplikasi contoh ke komputer lokal Anda:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Atau, Anda dapat mendownload contoh dalam file ZIP dan mengekstraknya.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Atau, Anda dapat mendownload contoh dalam file ZIP dan mengekstraknya.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Atau, Anda dapat mendownload contoh dalam file ZIP dan mengekstraknya.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Atau, Anda dapat mendownload contoh sebagai file ZIP dan mengekstraknya.
C#
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
Atau, Anda dapat mendownload contoh dalam file ZIP dan mengekstraknya.
Ruby
git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git
Atau, Anda dapat mendownload contoh dalam file ZIP dan mengekstraknya.
PHP
git clone https://github.com/GoogleCloudPlatform/php-docs-samples.git
Atau, Anda dapat mendownload contoh dalam file ZIP dan mengekstraknya.
Ubah ke direktori yang berisi kode contoh fungsi Cloud Run:
Node.js
cd nodejs-docs-samples/functions/imagemagick/
Python
cd python-docs-samples/functions/imagemagick/
Go
cd golang-samples/functions/imagemagick/
Java
cd java-docs-samples/functions/imagemagick/
C#
cd dotnet-docs-samples/functions/imagemagick/
Ruby
cd ruby-docs-samples/functions/imagemagick/
PHP
cd php-docs-samples/functions/imagemagick/
Memahami kode
Mengimpor dependensi
Aplikasi harus mengimpor beberapa dependensi untuk berinteraksi dengan layanan Google Cloud, ImageMagick, dan sistem file:
Node.js
Python
Go
Java
C#
Ruby
PHP
Menganalisis gambar
Fungsi berikut dipanggil saat gambar diupload ke bucket Cloud Storage yang Anda buat untuk menyimpan gambar. Fungsi ini menggunakan Vision API untuk mendeteksi konten kekerasan atau khusus dewasa dalam gambar yang diupload.
Node.js
Python
Go
Java
C#
Ruby
PHP
Pemburaman gambar
Fungsi berikut dipanggil ketika terdeteksi konten kekerasan atau khusus dewasa dalam gambar yang diupload. Fungsi ini akan mendownload gambar yang menyinggung, menggunakan ImageMagick untuk memburamkan gambar, lalu mengupload gambar yang diburamkan di atas gambar asli.
Node.js
Python
Go
Java
C#
Ruby
PHP
Men-deploy fungsi
Untuk men-deploy fungsi dengan pemicu penyimpanan, jalankan perintah berikut di direktori yang berisi kode contoh (atau untuk Java, file pom.xml
):
Node.js
gcloud functions deploy blurOffensiveImages \ --no-gen2 \ --runtime=RUNTIME \ --trigger-bucket=YOUR_INPUT_BUCKET_NAME \ --set-env-vars=BLURRED_BUCKET_NAME=YOUR_OUTPUT_BUCKET_NAME
Python
gcloud functions deploy blur_offensive_images \ --no-gen2 \ --runtime=RUNTIME \ --trigger-bucket=YOUR_INPUT_BUCKET_NAME \ --set-env-vars=BLURRED_BUCKET_NAME=YOUR_OUTPUT_BUCKET_NAME
Go
gcloud functions deploy BlurOffensiveImages \ --no-gen2 \ --runtime=RUNTIME \ --trigger-bucket=YOUR_INPUT_BUCKET_NAME \ --set-env-vars=BLURRED_BUCKET_NAME=YOUR_OUTPUT_BUCKET_NAME
Java
gcloud functions deploy java-blur-function \ --no-gen2 \ --entry-point=functions.ImageMagick \ --runtime=RUNTIME \ --memory 512MB \ --trigger-bucket=YOUR_INPUT_BUCKET_NAME \ --set-env-vars=BLURRED_BUCKET_NAME=YOUR_OUTPUT_BUCKET_NAME
C#
gcloud functions deploy csharp-blur-function \ --no-gen2 \ --entry-point=ImageMagick.Function \ --runtime=RUNTIME \ --trigger-bucket=YOUR_INPUT_BUCKET_NAME \ --set-env-vars=BLURRED_BUCKET_NAME=YOUR_OUTPUT_BUCKET_NAME
Ruby
gcloud functions deploy blur_offensive_images \ --no-gen2 \ --runtime=RUNTIME \ --trigger-bucket=YOUR_INPUT_BUCKET_NAME \ --set-env-vars=BLURRED_BUCKET_NAME=YOUR_OUTPUT_BUCKET_NAME
PHP
gcloud functions deploy blurOffensiveImages \ --no-gen2 \ --runtime=RUNTIME \ --trigger-bucket=YOUR_INPUT_BUCKET_NAME \ --set-env-vars=BLURRED_BUCKET_NAME=YOUR_OUTPUT_BUCKET_NAME
Ganti kode berikut:
RUNTIME
: runtime yang didasarkan pada Ubuntu 18.04 (runtime yang lebih baru tidak menyertakan dukungan untuk ImageMagick).YOUR_INPUT_BUCKET_NAME
: nama bucket Cloud Storage untuk mengupload gambar.YOUR_OUTPUT_BUCKET_NAME
: nama bucket tempat menyimpan gambar yang diburamkan.
Untuk contoh khusus ini, jangan sertakan gs://
sebagai bagian dari nama bucket dalam perintah deploy
.
Mengupload gambar
Upload gambar yang menyinggung, seperti gambar zombie pemakan daging ini:
gcloud storage cp zombie.jpg gs://YOUR_INPUT_BUCKET_NAME
pada
YOUR_INPUT_BUCKET_NAME
bucket Cloud Storage yang Anda buat sebelumnya untuk mengupload gambar.Perhatikan log untuk memastikan eksekusi telah selesai:
gcloud functions logs read --limit 100
Anda dapat melihat gambar yang diburamkan di bucket Cloud Storage
YOUR_OUTPUT_BUCKET_NAME
yang Anda buat sebelumnya.
Pembersihan
Agar tidak dikenakan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource-nya.
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
Untuk menghapus project:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Menghapus fungsi
Menghapus fungsi Cloud Run tidak akan menghapus resource apa pun yang tersimpan di Cloud Storage.
Untuk menghapus fungsi yang Anda deploy dalam tutorial ini, jalankan perintah berikut:
Node.js
gcloud functions delete blurOffensiveImages
Python
gcloud functions delete blur_offensive_images
Go
gcloud functions delete BlurOffensiveImages
Java
gcloud functions delete java-blur-function
C#
gcloud functions delete csharp-blur-function
Ruby
gcloud functions delete blur_offensive_images
PHP
gcloud functions delete blurOffensiveImages
Anda juga dapat menghapus fungsi Cloud Run dari Konsol Google Cloud.