Image Converter Windows App
Aplikasi konversi gambar Windows yang berjalan lokal, dibuat dengan Rust untuk konversi batch yang lebih privat.
Tautan Repositori
GitHub: https://github.com/walujanle/image-converter-windows-app
GitLab: https://gitlab.com/walujanle/image-converter-windows-app
Tautan Unduh
Rilis Terbaru: https://links.leonardwalujan.eu.org/lw/image-converter-windows-app-latest
Checksum Rilis Terbaru (SHA-256): https://links.leonardwalujan.eu.org/lw/image-converter-windows-app-latest-checksum
Kode Sumber: https://links.leonardwalujan.eu.org/lw/image-converter-windows-app-latest-source-code
Tangkapan Layar
-
Image Converter Windows App Screenshot 1 -
Image Converter Windows App Screenshot 2 -
Image Converter Windows App Screenshot 3 -
Image Converter Windows App Screenshot 4
Penjelasan Singkat
Image Converter Windows App adalah aplikasi desktop portable untuk mengonversi gambar langsung di komputer Windows. Aplikasi ini dibuat untuk pengguna yang ingin mengubah banyak gambar sekaligus tanpa mengunggah foto pribadi ke layanan online.
Aplikasi ini mendukung format umum seperti JPG, PNG, WebP, AVIF, HEIC/HEIF, dan TIFF. Selain itu, aplikasi juga dapat membaca file RAW kamera seperti DNG, CR2, NEF, ARW, PEF, dan SR2 melalui RAW decoder yang dibundel. Alurnya mencakup pemilihan format, pengaturan kualitas, resize, crop, kustomisasi nama file, folder output khusus, preset, progress conversion, dan pelestarian metadata.
Ide utamanya sederhana: foto tetap berada di perangkat pengguna. Aplikasi membaca file lokal, memprosesnya secara lokal, lalu menyimpan hasil konversi secara lokal tanpa memerlukan server untuk proses konversi.
Tujuan Project
Saya membuat aplikasi ini dari rasa penasaran tentang bagaimana konversi gambar sebenarnya bekerja. Saya ingin memahami bagaimana berbagai format gambar menyimpan data, bagaimana metadata seperti EXIF, XMP, IPTC, dan ICC bisa dipertahankan ketika berpindah format, serta sejauh mana performa konversi gambar dapat dimaksimalkan menggunakan Rust.
Project ini juga menjadi cara praktis bagi saya untuk mempelajari kode Rust dalam bentuk aplikasi yang utuh, bukan hanya contoh kecil yang terpisah. Dari sini saya bisa belajar bagaimana conversion logic, metadata handling, validasi file, state UI, dan proses release packaging bekerja bersama dalam satu tool.
Di luar sisi pembelajaran, aplikasi ini dibuat untuk menyelesaikan masalah workflow ketika banyak gambar perlu dikonversi, diganti kualitasnya, diubah resolusinya, atau dirapikan format penamaannya. Jika dilakukan manual satu per satu, proses seperti ini bisa lambat dan berantakan. Aplikasi ini menyatukan langkah-langkah tersebut ke dalam satu tool lokal, sehingga file dapat diproses lebih cepat dan hasilnya lebih tertata melalui nama file yang konsisten, format yang jelas, dan struktur file yang lebih rapi.
Tech Stack yang Digunakan
- Rust untuk aplikasi dan conversion engine
- Model aplikasi desktop native Windows
- Target Windows 10/11 64-bit
- SQLite untuk penyimpanan settings dan preset secara portable
- Rust Windows/MSVC target untuk binary utama aplikasi
- MinGW/GCC untuk membangun ulang RAW decoder
dcrawketika dibutuhkan - CMD dan PowerShell untuk workflow release Windows otomatis
- Distribusi portable ZIP dengan runtime file yang dibundel bersama aplikasi
Daftar ini tidak memasukkan library internal. Fokusnya adalah teknologi utama yang membentuk project.
Fitur
Konversi gambar batch
Berada di layar utama Converter. Pengguna dapat menekan + Select Files atau drag-and-drop gambar ke file list, memilih format output, lalu memulai proses dengan Start Conversion. File list menampilkan progress dan status hasil untuk setiap file.
Format input dan output
Berada di format selector pada options panel. Aplikasi dapat menghasilkan JPG, PNG, WebP, AVIF, HEIC, dan TIFF. Aplikasi juga dapat membaca format umum tersebut serta file RAW kamera seperti DNG, CR2, NEF, ARW, PEF, dan SR2.
Mode Simple dan Advanced
Berada di header atas ketika tool Converter aktif. Simple mode membuat tampilan tetap ringkas untuk kebutuhan umum. Advanced mode membuka kontrol tambahan untuk lokasi output, resize, crop, aturan nama file, dan ukuran batch.
Kontrol kualitas dan lossless
Berada di options panel. JPG, WebP, AVIF, dan HEIC memiliki kontrol kualitas. WebP dan HEIC juga memiliki opsi lossless. PNG memiliki opsi Optimize PNG, tetapi secara default dinonaktifkan karena bisa berat untuk batch besar.
Resize dan crop
Berada di Advanced mode. Resize memungkinkan pengguna mengatur lebar dan tinggi, termasuk pilihan untuk menjaga aspect ratio. Crop memungkinkan pengguna memotong persentase dari sisi atas, bawah, kiri, dan kanan sebelum proses resize.
Pengaturan nama file dan output
Berada di Advanced mode. Pengguna dapat memilih folder output khusus, menambahkan prefix nama file, melakukan find and replace pada nama file, menambahkan suffix resolusi otomatis, dan membuat output bernomor.
Pelestarian metadata
Tersedia melalui opsi Keep Metadata di converter. Ketika opsi ini diaktifkan, aplikasi mencoba mempertahankan EXIF, XMP, IPTC, dan ICC ketika format output mendukungnya. Untuk format yang hanya dibaca sebagian oleh Windows, aplikasi menambahkan proyeksi metadata yang lebih mudah dibaca oleh OS agar informasi kamera, GPS, lensa, dan author tetap lebih terlihat di file properties. ICC colour profile juga dapat ikut dibawa pada output yang mendukungnya agar tampilan warna tetap konsisten.
Metadata RAW
Ditangani di metadata pipeline. Untuk file RAW yang mirip TIFF, aplikasi membaca metadata yang tertanam di file dan juga memeriksa sidecar file jika tersedia. Route RAW ke JPG, HEIC, WebP, PNG, AVIF, dan TIFF dilacak dengan hati-hati karena setiap kamera dan container dapat menampilkan metadata dengan cara berbeda.
Preset
Berada di preset panel dan Preset Manager. Pengguna dapat menyimpan pengaturan konversi, memuat preset terbaru atau pinned preset, mencari preset, dan mengelompokkannya ke folder.
Icon Generator
Berada di tool switcher bagian atas dengan nama Icon Generator. Tool terpisah ini dapat membuat paket Windows ICO, web favicon, dan ikon Android dari satu gambar sumber.
Settings portable
Disimpan di folder data yang berada di sebelah executable. Dengan cara ini, settings dan preset tetap berada bersama aplikasi portable.
Cara Kerja
Saat file dikonversi, aplikasi memvalidasi tipe file, membaca gambar, menyiapkan metadata ketika Keep Metadata atau transfer colour profile berlaku, memperbaiki orientasi jika diperlukan, menerapkan crop opsional, resize opsional, lalu melakukan encoding ke format target. Hasilnya ditulis terlebih dahulu ke temporary file. Setelah output dan metadata yang diminta diverifikasi, temporary file dipublikasikan sebagai file final.
Pendekatan ini menjaga file output lama agar tidak terhapus terlalu cepat. Jika encoding atau verifikasi gagal, temporary file akan dihapus dan file tujuan yang sudah ada tetap dibiarkan aman.
Panduan Instalasi
Untuk pengguna umum:
- Unduh ZIP portable terbaru dari tautan unduh di atas.
- Opsional: cocokkan checksum SHA-256 dengan tautan checksum.
- Ekstrak ZIP ke folder yang Anda kontrol, misalnya
Documents\Apps\Image Converter Windows App. - Jalankan
image-converter-windows-app.exe. - Simpan folder
datadi sebelah executable jika ingin settings dan preset tetap tersimpan bersama aplikasi.
Jika Windows SmartScreen muncul, lanjutkan hanya jika file berasal dari sumber unduhan resmi. Aplikasi ini didistribusikan sebagai executable Windows portable, sehingga build yang belum ditandatangani dapat memunculkan peringatan di beberapa sistem.
Untuk developer:
-
Gunakan Windows 10/11 64-bit dengan Rust stable toolchain.
-
Tambahkan target Rust Windows MSVC untuk build utama aplikasi. Bundle release saat ini memakai triplet vcpkg
x64-windowsdan menyalin MSVC runtime DLL. -
Install Visual Studio 2022 Build Tools dengan C++ build tools dan Windows SDK. Toolchain ini menyediakan linker MSVC yang dibutuhkan target Rust MSVC dan port vcpkg yang harus dikompilasi dari source.
-
Install MinGW/GCC dan pastikan
gcctersedia diPATH. Release script memakaigccuntuk membangun ulangdcraw.exedaridcraw\dcraw.cketikadcraw.exeatau file hash-nya hilang atau berubah. -
Install Git dan CMake, karena dependency setup menggunakan workflow vcpkg standar.
-
Install vcpkg secara standalone dan lakukan bootstrap:
git clone https://github.com/microsoft/vcpkg.git C:\vcpkg C:\vcpkg\bootstrap-vcpkg.bat -
Install port vcpkg yang dibutuhkan memakai triplet
x64-windowsyang sama dengan ekspektasi release script:vcpkg install libheif[hevc]:x64-windows vcpkg install dav1d:x64-windows vcpkg install pkgconf:x64-windows -
Set
VCPKG_ROOTke folder vcpkg. Untuk menjalankan command Cargo secara manual, set juga:$env:PKG_CONFIG = "$env:VCPKG_ROOT\installed\x64-windows\tools\pkgconf\pkgconf.exe" $env:PKG_CONFIG_PATH = "$env:VCPKG_ROOT\installed\x64-windows\lib\pkgconfig" $env:PATH = "$env:VCPKG_ROOT\installed\x64-windows\bin;$env:PATH" -
Jalankan pemeriksaan development yang umum:
cargo check cargo test --lib cargo clippy --all-targets -- -D warnings cargo run -
Untuk membuat bundle release portable, jalankan
build_release_windows.bat. Script ini menjalankan formatting, tests, clippy, verifikasi atau rebuilddcraw, release build, pengumpulan DLL, pembuatan ZIP, dan checksum SHA-256.
set PUBLISHER=Nama Publisher Anda
build_release_windows.bat
Project ini memiliki dua kebutuhan native toolchain yang berbeda di Windows: aplikasi Rust utama memakai target/toolchain MSVC dan vcpkg x64-windows, sedangkan jalur rebuild dcraw yang bersifat opsional memakai MinGW/GCC melalui command gcc.
cargo build --release secara manual hanya membuat executable di target\release. Jika EXE itu dijalankan di luar folder release, DLL HEIC/AVIF dan MSVC runtime harus disalin di sebelahnya. Dukungan RAW juga membutuhkan dcraw.exe dan dcraw.exe.sha256 tersedia di root repository sebelum compile, karena aplikasi saat ini meng-embed dcraw ke executable dan mengekstraknya saat runtime, bukan mencari sidecar dcraw.exe. Jalur yang direkomendasikan adalah release script karena runtime file tersebut dipaketkan otomatis.
Batasan dan Masalah
- Build resmi difokuskan untuk Windows 10/11 64-bit.
- Gambar yang sangat besar dapat memakai banyak memori karena pipeline saat ini membaca source image ke memori.
- PNG optimization bersifat opsional dan dinonaktifkan secara default karena dapat lambat dan berat di CPU.
- Dukungan RAW bergantung pada RAW decoder yang dibundel dan perilaku file dari masing-masing kamera.
- Visibilitas metadata dapat berbeda antara Windows Properties, metadata tools profesional, dan sistem operasi lain.
- WebP, AVIF, dan HEIC tidak mendukung IPTC secara native.
- AVIF belum mendukung embedding ICC profile karena keterbatasan encoder.
- Build portable yang belum ditandatangani dapat memicu peringatan Windows SmartScreen.
Lisensi
Image Converter Windows App dirilis dengan GNU General Public License v3.0 or later.
Artinya, pengguna dapat mempelajari, memodifikasi, dan mendistribusikan ulang project ini sesuai ketentuan GPL. Bundle release juga menyertakan komponen codec/runtime pihak ketiga, sehingga lisensi masing-masing komponen tetap berlaku.
Proyek Terbaru
Image Converter Web App
Aplikasi konversi gambar lokal di browser, dibuat dengan React, TypeScript, Web Workers, dan engine npm Rust/WebAssembly.
Image Converter WASM
Package konversi gambar berbasis Rust WebAssembly untuk browser dan Node.js, dipublikasikan sebagai package npm.
Tes
Tes