ການພິມລາຍຊື່ຮູບພາບທີ່ມີປ້າຍສີ
ຕົວຢ່າງທຳອິດໄດ້ສະແດງໃຫ້ເຫັນພື້ນຖານຂອງ lua ແລະ ຊ່ວຍໃຫ້ພວກເຮົາກວດສອບວ່າທຸກຢ່າງເຮັດວຽກໄດ້ດີ. ບາດນີ້ມາລອງເຮັດສິ່ງທີ່ຊັບຊ້ອນກວ່ານັ້ນໜ້ອຍໜຶ່ງ. ມາລອງພິມລາຍຊື່ຮູບພາບທີ່ມີປ້າຍສີ “ແດງ” ຕິດຢູ່. ແຕ່ກ່ອນອື່ນໝົດ, ຮູບພາບແມ່ນຫຍັງ?
local darktable = require "darktable"
local debug = require "darktable.debug"
print(darktable.debug.dump(darktable.database[1]))
ການໃຊ້ລະຫັດຂ້າງເທິງຈະໃຫ້ຜົນລັດອອກມາຫຼາຍຫຼາຍ. ພວກເຮົາຈະມາເບິ່ງມັນໃນອີກຈັກໜ້ອຍ, ແຕ່ກ່ອນອື່ນມາເບິ່ງທີ່ຕົວລະຫັດກ່ອນ.
ພວກເຮົາຮູ້ຈັກ require darktable ແລ້ວ. ໃນທີ່ນີ້, ພວກເຮົາຕ້ອງ require darktable.debug ແຍກຕ່າງຫາກ ເຊິ່ງເປັນສ່ວນເສີມຂອງ API ທີ່ໃຫ້ຟັງຊັນຊ່ວຍເຫຼືອໃນການແກ້ໄຂຈຸດບົກພ່ອງ (debug) ຂອງສະຄຣິບ lua.
darktable.database ແມ່ນຕາຕະລາງທີ່ API ຈັດຫາໃຫ້ ເຊິ່ງປະກອບດ້ວຍຮູບພາບທັງໝົດໃນຖານຂໍ້ມູນ library. ແຕ່ລະລາຍການໃນຖານຂໍ້ມູນແມ່ນວັດຖຸຮູບພາບ (image object). ວັດຖຸຮູບພາບແມ່ນວັດຖຸທີ່ຊັບຊ້ອນ ເຊິ່ງຊ່ວຍໃຫ້ທ່ານຈັດການຮູບພາບຂອງທ່ານໄດ້ໃນຫຼາຍວິທີ (ທັງໝົດມີລາຍລະອຽດໃນສ່ວນ types_dt_lua_image_t ຂອງຄູ່ມື API). ເພື່ອສະແດງຮູບພາບຂອງພວກເຮົາ, ພວກເຮົາໃຊ້ darktable.debug.dump ເຊິ່ງເປັນຟັງຊັນທີ່ຈະຮັບຄ່າໃດກໍໄດ້ເປັນພາຣາມິເຕີ ແລະ ສະແດງເນື້ອໃນຂອງມັນອອກມາທັງໝົດ. ເນື່ອງຈາກຮູບພາບເປັນວັດຖຸທີ່ຊັບຊ້ອນ ແລະ ອ້າງອີງເຖິງວັດຖຸອື່ນໆ, ຜົນລັດທີ່ໄດ້ຈຶ່ງມີຂະໜາດໃຫຍ່ຫຼາຍ. ຂ້າງລຸ່ມນີ້ແມ່ນຕົວຢ່າງຂອງຜົນລັດທີ່ຖືກຕັດໃຫ້ສັ້ນລົງ.
toplevel (ຂໍ້ມູນຜູ້ໃຊ້,dt_lua_image_t) : /images/100.JPG
publisher (ຂໍ້ຄວາມ) : ""
path (ຂໍ້ຄວາມ) : "/images"
move (ຟັງຊັນ)
exif_aperture (ຕົວເລກ) : 2.7999999523163
rights (ຂໍ້ຄວາມ) : ""
make_group_leader (ຟັງຊັນ)
exif_crop (ຕົວເລກ) : 0
duplicate_index (ຕົວເລກ) : 0
is_raw (ບູລີນ) : false
exif_iso (ຕົວເລກ) : 200
is_ldr (ບູລີນ) : true
rating (ຕົວເລກ) : 1
description (ຂໍ້ຄວາມ) : ""
red (ບູລີນ) : false
get_tags (ຟັງຊັນ)
duplicate (ຟັງຊັນ)
creator (ຂໍ້ຄວາມ) : ""
latitude (ຫວ່າງເປົ່າ)
blue (ບູລີນ) : false
exif_datetime_taken (ຂໍ້ຄວາມ) : "2014:04:27 14:10:27"
exif_maker (ຂໍ້ຄວາມ) : "Panasonic"
drop_cache (ຟັງຊັນ)
title (ຂໍ້ຄວາມ) : ""
reset (ຟັງຊັນ)
create_style (ຟັງຊັນ)
apply_style (ຟັງຊັນ)
film (ຂໍ້ມູນຜູ້ໃຊ້,dt_lua_film_t) : /images
1 (ຂໍ້ມູນຜູ້ໃຊ້,dt_lua_image_t): .toplevel
[......]
exif_exposure (ຕົວເລກ) : 0.0062500000931323
exif_lens (ຂໍ້ຄວາມ) : ""
detach_tag (ຟັງຊັນ): toplevel.film.2.detach_tag
exif_focal_length (ຕົວເລກ) : 4.5
get_group_members (ຟັງຊັນ): toplevel.film.2.get_group_members
id (ຕົວເລກ) : 1
group_with (ຟັງຊັນ): toplevel.film.2.group_with
delete (ຟັງຊັນ): toplevel.film.2.delete
purple (ບູລີນ) : false
is_hdr (ບູລີນ) : false
exif_model (ຂໍ້ຄວາມ) : "DMC-FZ200"
green (ບູລີນ) : false
yellow (ບູລີນ) : false
longitude (ຫວ່າງເປົ່າ)
filename (ຂໍ້ຄວາມ) : "100.JPG"
width (ຕົວເລກ) : 945
attach_tag (ຟັງຊັນ): toplevel.film.2.attach_tag
exif_focus_distance (ຕົວເລກ) : 0
height (ຕົວເລກ) : 648
local_copy (ບູລີນ) : false
copy (ຟັງຊັນ): toplevel.film.2.copy
group_leader (ຂໍ້ມູນຜູ້ໃຊ້,dt_lua_image_t): .toplevel
ຢ່າງທີ່ພວກເຮົາເຫັນ, ຮູບພາບໜຶ່ງມີຟີວຈຳນວນຫຼາຍທີ່ໃຫ້ຂໍ້ມູນທຸກປະເພດກ່ຽວກັບມັນ. ໃນທີ່ນີ້, ພວກເຮົາສົນໃຈປ້າຍສີ “ແດງ”. ຟີວນີ້ເປັນຄ່າ boolean (ຈິງ/ບໍ່ຈິງ), ແລະ ເອກະສານບອກວ່າພວກເຮົາສາມາດຂຽນຄ່າລົງໄປໄດ້. ຕອນນີ້ພວກເຮົາພຽງແຕ່ຕ້ອງຊອກຫາຮູບທັງໝົດທີ່ມີຟີວນີ້ ແລະ ພິມພວກມັນອອກມາ:
darktable = require "darktable"
for _,v in ipairs(darktable.database) do
if v.red then
print(tostring(v))
end
end
ລະຫັດນີ້ຄວນຈະເຂົ້າໃຈໄດ້ງ່າຍໃນຕອນນີ້, ແຕ່ມັນກໍມີບາງແງ່ມຸມທີ່ໜ້າສົນໃຈຂອງ lua ທີ່ຄວນເນັ້ນ:
-
ipairsແມ່ນຟັງຊັນມາດຕະຖານຂອງ lua ທີ່ຈະວົນຊ້ຳ (iterate) ຜ່ານດັດຊະນີຕົວເລກທັງໝົດຂອງຕາຕະລາງ. ພວກເຮົາໃຊ້ໃນທີ່ນີ້ເພາະຖານຂໍ້ມູນຂອງ darktable ມີດັດຊະນີທີ່ບໍ່ແມ່ນຕົວເລກ ເຊິ່ງເປັນຟັງຊັນສຳລັບຈັດການຖານຂໍ້ມູນເອງ (ຕົວຢ່າງ: ການເພີ່ມ ຫຼື ລຶບຮູບພາບ). -
Iterating through a table will return both the key and the value used. It is conventional in lua to use a variable named “
_” to store values that we don’t care about. -
ໝາຍເຫດວ່າພວກເຮົາໃຊ້ຟັງຊັນ lua ມາດຕະຖານ
tostringໃນທີ່ນີ້ ແລະ ບໍ່ແມ່ນdarktable.debug.dump. ຟັງຊັນມາດຕະຖານຈະສົ່ງຄືນຊື່ຂອງວັດຖຸ ໃນຂະນະທີ່ຟັງຊັນ debug ຈະພິມເນື້ອໃນອອກມາ. ຟັງຊັນ debug ຈະໃຫ້ຂໍ້ມູນຫຼາຍເກີນໄປໃນກໍລະນີນີ້. ຢ້ຳອີກຄັ້ງ, ມັນເປັນເຄື່ອງມື debug ທີ່ດີ ແຕ່ບໍ່ຄວນໃຊ້ເພື່ອຈຸດປະສົງອື່ນ.
translations
- English: printing labeled images
- Français: Impression d'images étiquetées
- German: Markierte Bilder drucken
- Español: impresión de imágenes etiquetadas
- Italian: stampare immagini etichettate
- Polish: drukowanie oznakowanych zdjęć
- Português: imprimir imagens com etiqueta
- Ukrainian: Друк зображень із міткою
- Dutch: gelabelde afbeeldingen afdrukken