Saya baru-baru ini meningkatkan organisasi foto dan alur kerja manajemen saya dari "tidak ada sama sekali" ke Lightroom 4, dan sementara saya umumnya sangat senang dengan perangkat lunak, satu fitur yang sangat kurang adalah kemampuan untuk merekam segala jenis makro atau skrip untuk diotomatisasi tugas berulang - selama migrasi saya ke lightroom, ada banyak tugas berulang yang ingin saya lakukan, dan saya ingin tahu apakah ada baiknya belajar bagaimana menulis plugin LR untuk melakukan beberapa tugas ini. Untuk memberi Anda contoh hal-hal yang ingin sayaotomatiskan:
- Dalam sekelompok besar foto RAW + PSD + JPG yang ditumpuk, pilih file di setiap tumpukan dengan ekstensi JPG dan jadikan bagian atas tumpukan
- Melakukan salinan massal metadata dari file RAW (yang sudah ada) ke file JPEG (yang sudah ada)
Saya dapat melihat banyak cara lain agar skrip dapat membuat manajemen gambar di dalam Lightroom bahkan lebih mudah daripada sekarang. Pertanyaan saya kemudian memiliki tiga bagian:
1) Seberapa sulitkah untuk menulis plugin Lightroom? Saya berpengalaman dalam sejumlah bahasa pemrograman (C / C ++, Python, Perl), tapi saya belum melakukan apa-apa dengan Lua. Apakah Lightroom API mudah dihubungkan, dan apakah itu memerlukan alat khusus untuk pengembangan?
2) Dapatkah saya menulis skrip untuk melakukan jenis tugas yang saya jelaskan di atas dengan mudah?
3) Apakah ada sumber daya atau tutorial yang bisa saya baca untuk memulai dengan pengembangan plugin Lightroom?
sumber
Jawaban:
Lua mungkin adalah bahasa pemrograman paling sederhana dan paling bersih yang saya tahu. (Dan saya tahu beberapa .)
Kesederhanaan Lua juga merupakan kelemahan terbesarnya: karena desainnya yang kecil, bahasa yang bersih, tidak memiliki banyak hal bawaan yang ingin Anda temukan ketika berasal dari bahasa tingkat industri seperti Jawa, atau baterai Bahasa -termasuk seperti Python.
Lua dirancang untuk diperpanjang oleh C, yang dalam hal ini berarti SDK Lightroom. Itu bagus jika Adobe melakukan pekerjaan untuk menyediakan alat yang Anda butuhkan yang tidak dibangun ke dalam Lua, tetapi setiap sekarang dan kemudian Anda mungkin akan menemukan diri Anda memanggil alat eksternal untuk menyelesaikan sesuatu.
Satu-satunya bagian yang sulit tentang itu adalah Anda perlu menyusun kode sumber Anda dengan cara tertentu dan menyediakan
Info.lua
file khusus untuk memberi tahu Lightroom tentang plugin Anda. Itu semua dijelaskan dalam dokumen SDK . SDK mencakup beberapa plugin yang berfungsi untuk memulai, termasuk plugin "hello world" yang cukup rumit yang dapat diambil untuk kode awal yang bermanfaat.Anda dapat bertahan hanya dengan editor teks.
Tidak ada fasilitas debugging yang dibangun ke dalam Lightroom, tetapi ada fasilitas debug logging di SDK. Anda dapat menangkap pesan-pesan ini di
WinDbg
Windows atauConsole
OS X.Perkembangan yang lebih baru adalah sumber terbuka ZeroBrane Studio Lua IDE. Anda dapat menggunakan ini alih-alih editor teks lain, tetapi bagian yang sangat keren adalah mungkin untuk melampirkannya ke plugin Anda yang sedang berjalan yang memungkinkan Anda men-debug-nya saat dijalankan. Saya sudah mencoba ini, dan itu membantu mengurangi waktu siklus perbaikan / muat ulang / debugging.
Saya tidak berpikir kedua tugas itu 100% dapat dilakukan hanya dengan menggunakan Lightroom SDK, tetapi dapat melakukan banyak pekerjaan untuk Anda.
Berikut ini beberapa kode mirip Lua untuk membuat Anda hampir sampai di sana:
Sayangnya, saya tidak melihat cara di SDK untuk melakukan tindakan baris komentar terdalam itu, setidaknya LR 5. Yang terbaik yang bisa saya lakukan adalah menelepon
catalog:setSelectedPhotos(peer)
, lalu menyerahkannya kepada pengguna untuk benar-benar mengeklik lencana nomor untuk menyusun ulang tumpukan.Anda dapat melakukan ini dengan SDK yang ada, tetapi ada batasannya.
Misalnya, saat Anda bisa membaca nilai
dateTimeOriginal
bidang EXIF , tidak ada fasilitas di SDK itu sendiri untuk mengatur nilai. Saya berasumsi ini karena pengembang Lightroom memutuskan ini tidak boleh diubah secara program, bahwa ini adalah informasi berharga dari kamera. (Kenapa itu harus terjadi ketika ada Metadata> Edit Capture Time ... item menu yang saya tidak tahu, tapi begitulah.)Tapi, setiap kali SDK mencoba menjebak Anda dengan salah satu dari keterbatasan ini, sering ada lubang palka untuk melarikan diri. Anda dapat menginstal ExifTool dan memanggilnya dari Lua, misalnya. Itu bukan solusi yang sempurna, karena Anda kemudian memiliki ketidakkonsistenan antara metadata katalog dan metadata foto, tetapi Lightroom akan melihat dan menempelkan lencana pada foto, yang ketika diklik akan memungkinkan Anda menyelesaikan konflik dengan memuat ulang metadata dari foto.
(Anda akan ingin memiliki opsi "Secara otomatis menulis perubahan ke XMP" yang diatur dalam dialog Pengaturan Katalog ketika menggunakan plugin semacam itu. Jika tidak, Anda membuatnya lebih mudah untuk menciptakan konflik dua arah, di mana baik katalog dan metadata foto memiliki berubah. Lightroom tidak tahu cara menggabungkan dua set metadata; itu membuat Anda memilih satu, dan menimpa salinan metadata lainnya dengannya.)
sumber
LrPhoto:setRawMetadata()
bagian, misalnya.Saya tidak tahu Lightroom (belum - memilikinya tetapi belum menginstalnya), tetapi tergantung pada kompleksitas dari apa yang Anda coba lakukan, Anda mungkin ingin melihat sistem makro alat / alat otomatisasi keyboard seperti AutoHotKey . Ini memungkinkan Anda merekam atau memprogram urutan penekanan tombol yang dapat Anda temukan dan kemudian, ketika Anda menekan tombol panas, itu memainkannya kembali ke dalam program Anda (seperti LightRoom) sehingga - sejauh menyangkut program - terlihat seperti Anda mengetiknya. Ini memungkinkan Anda untuk mengotomatisasi segala macam hal tanpa harus memodifikasi program aplikasi Anda sama sekali.
sumber
Saya hanya ingin melihat bagaimana melakukan pemrosesan batch berdasarkan nama file di Lightroom, dan untuk beberapa alasan itu tampak seperti cara termudah untuk melakukannya adalah melalui API. Berdasarkan pada pos @ Warren saya berhasil membuat loop dalam ini untuk tombol pada formulir, di mana saya juga bisa meletakkan textfield untuk logging (
logs_field
), dan beberapa nilai input (seperti textfield untuk memasukkan nama filefilenames_field
dan beberapa parameter tambahan untuk batch diproses dalamrating_field
):Potongan ini akan melalui beberapa pola nama file, dan menerapkan label untuk semua foto (Anda mungkin ingin mengganti
getAllPhotos
dengangetMultipleSelectedOrAllPhotos
jika Anda hanya perlu menjalankannya pada beberapa gambar) yang cocok dengan pola tersebut. Saya harus melakukan ini karena saya sudah menandai foto di luar Lightroom tetapi membutuhkan cara mudah untuk memindahkan tag tersebut ke LR juga berdasarkan nama file.Saya memasang seluruh proyek juga di github , tetapi potongan di atas harus baik-baik saja untuk digunakan sebagai dasar untuk tugas-tugas pemrosesan batch berbasis nama file.
sumber