Cum să obțineți informații dintr-o fotografie cu Ruby

Cuprins

Astăzi suntem obișnuiți să ne încărcăm fotografiile pe rețelele de socializare sau în „cloud” fără să ne gândim ce date poartă în spate, cu siguranță mulți încă nu știu că poartă metadate („informații despre imagine”) pe care nu le vedem cu cei goi ochi. Dar dacă faceți clic dreapta cu mouse-ul pe o imagine și mergem la proprietăți și căutăm să vedem o mulțime de informații, atunci vă las câteva capturi de ecran cu aspectul acestor informații în Linux și Windows.

Ok, informațiile pe care le vedem în imaginile de mai sus nu sunt cele mai importante, nu pot ști prea multe despre noi, cu excepția faptului că am făcut fotografia, de fapt, dacă îmi permiteți să vă ocup locația, camera va avea și locul unde fotografia a fost făcută și cel puțin în Windows poate fi văzută fără a avea instrumente specifice (este în același loc cu imaginea anterioară Proprietăți> Detalii), uitați-vă la următoarea imagine (am șters informațiile):

Dacă mergem la o pagină care atunci când introducem latitudinea și longitudinea ne oferă adresa exactă unde a fost făcută fotografia, începe să existe un anumit pericol, o persoană rău intenționată poate afla unde locuim.

MARI

În acest tutorial am de gând să predă un cod Ruby care extrage metadatele din jpeg.webp, jpg.webp, deși le puteți obține și din imagini tiff.

Primul lucru de care avem nevoie este să instalăm o bibliotecă externă numită exifr, pentru aceasta executăm următoarea propoziție:

 gem instalare exifr
Să vedem codul, dacă ați programat ceva cu rubin va fi foarte simplu:
 necesită 'exifr' image = '/home/ubuntu/solvetic.jpg.webp' dacă EXIFR :: JPEG.webp.new (image) .exif? apoi imprimați "Lățime:", EXIFR :: JPEG.webp.new (imagine) .lățime, "\ n" tipăriți "Înălțime:", EXIFR :: JPEG.webp.new (imagine) .înălțime, "\ n" tipăriți "Modelul camerei sau mobil: ", EXIFR :: JPEG.webp.new (image) .model," \ n "print" Date: ", EXIFR :: JPEG.webp.new (image) .date_time," \ n "if EXIFR :: JPEG.webp.new ( image) .gps apoi tipăriți „Latitude:”, EXIFR :: JPEG.webp.new (image) .gps.latitude, „\ n„ print „Longitude:„, EXIFR :: JPEG.webp.new (image) .gps.longitude, „ \ n "end else pune capătul" Fără metadate "
Mai întâi importăm biblioteca, declarăm o variabilă cu calea imaginii noastre și facem o mică verificare, apoi vom obține doar proprietățile imaginii (dacă există vreo proprietate care nu are valoare, rămâne pur și simplu goală). În partea finală a if-ului vom verifica dacă are date GPS, astfel încât să nu ne dea o eroare dacă este o valoare nulă, dacă are, o afișăm pe ecran.

NotăUnde vezi textul /home/ubuntu/solvetic.jpg.webp ar trebui să meargă pe calea imaginii tale.

Dacă rulăm codul, avem următoarea ieșire a consolei:

Iată un zip cu codul de mai sus:

metadate Ruby.zip 373 octeți 148 Descărcări

V-a plăcut și ați ajutat acest tutorial?Puteți recompensa autorul apăsând acest buton pentru a-i oferi un punct pozitiv
wave wave wave wave wave