Contoh Kasus

  1. Saya punya bucket di DigitalOcean Spaces, mau compress gambar dan pdf yang ada di dalamnya. Bagaimana caranya? karena DO Spaces tidak ada service lambda seperti di AWS

  2. Saya punya bucket di AWS S3, mau compress gambar dan pdf yang ada di dalamnya, tapi ga mau pake lambda karena males setup mahal

Saya bahas kelebihan dan kekurangan compress tanpa lambda

Plus (+) Minus (-)
Ga ada biaya tambahan Kudu banyak trial & error
Lebih mudah edit script nya daripada lambda Ga bisa live compression
Bisa compress file apapun juga Tetap perlu server buat eksekusi nya (tapi ga harus dedicated server)

Setup Goofys (Mount S3 Tanpa Disk Cache)

Untuk penjelasan lengkapnya kenapa pake goofys , bisa baca di Goofys Alternatif s3fs yang Ga Perlu Disk Data Cache

  1. Download goofys di github . Saat saya menulis ada di versi 0.24.0
wget https://github.com/kahing/goofys/releases/download/v0.24.0/goofys
  1. Buat jadi executable
chmod +x goofys
  1. Buat credentials di ~/.aws/credentials, isi dengan
[default]
aws_access_key_id = your-access-key
aws_secret_access_key = MY-SECRET-KEY

Buat DO Spaces ga usah di ganti jadi do_access_key_id ya si aws_access_key_id nya..

  1. Kita coba mount
  ./goofys --endpoint sgp1.digitaloceanspaces.com your-spaces-name /mnt/your-mount-location/
Punya Backup 1 Petabytes!

Punya Backup 1 Petabytes!


Cara Compress Gambar

Banyak cara untuk compress gambar, saya kasih beberapa referensi nya

  1. Based on dev.to/feldroy dan beberapa pertanyaan di stackoverflow,
#*compress* semua file .jpg
mogrify  -sampling-factor 4:2:0 -strip -quality 70 -interlace JPEG -colorspace sRGB *.jpg
  1. Compress semua file yang berukuran > 2MB
#cari semua file jpg berukuran > 2MB dan *compress*
#bisa juga pake opsi -resize 70%
find . -type f -name "*.jpg" -size +2000k -exec mogrify  -sampling-factor 4:2:0 -strip -quality 70% -interlace JPEG -colorspace sRGB  {} \;
#compress tapi keep minimal aspect ratio
#for portrait photos, keep ratio based on https://buffer.com/library/instagram-image-size/
find . -type f -name "*.jpg" -size +2000k -exec mogrify  -sampling-factor 4:2:0 -strip -quality 70% -resize 1080x1350 -interlace JPEG -colorspace sRGB  {} \;
  1. Untuk compression nya, ga harus pake mogrify, bisa juga pake jpegoptim, convert, dll.
#compress pake jpegoptim
find . -type f -name "*.jpeg" -size +2000k -exec jpegoptim --size=60% {} \;
#for png best compresion, you can use pngquant
find . -type f -name "*.png" -size +1000k -exec pngquant --strip --skip-if-larger --ext .png --force  {} \;
Kudu Sabar, Prosesnya Emang Lebih Lama Daripada Di Lokal

Kudu Sabar, Prosesnya Emang Lebih Lama Daripada Di Lokal

Compress PDF

Saya belum nemu cara compress pdf tanpa harus rename file, tapi ada cara compress yang saya dapat dari askubuntu secara batch yang work

find . -name '*.pdf' | while read pdf; do gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile="${pdf}_new.pdf" "$pdf"; done

Note jika ingin size nya sesuai, silahkan sesuaikan settingnya:

-dPDFSETTINGS=/screen: lower quality, smaller size.
-dPDFSETTINGS=/ebook: for better quality, but slightly larger pdfs.
-dPDFSETTINGS=/prepress: output similar to Acrobat Distiller "Prepress Optimized" setting.
-dPDFSETTINGS=/printer: selects output similar to the Acrobat Distiller "Print Optimized" setting.
-dPDFSETTINGS=/default: selects output intended to be useful across a wide variety of uses,

Referensi:

askubuntu - how to compress more than one pdf

dev.to/feldroy - til strategis for compressing jpg

imagemagick - resizing PNG


Jika kamu merasa tulisan ini bermanfaat & membantu kamu, kamu bisa berdonasi lewat saweria

If you feel this website help you, you can donate at saweria