Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-10-2011, 12:23   #1
marco0608
Junior Member
 
Iscritto dal: Oct 2011
Messaggi: 6
una soluzione per la risoluzione

Salve a tutti,
sono un arzillo vecchietto e avrei bisogno di una mano: devo scoprire come trovare la risoluzione (dpix e dpiy) di un'immagine (JPG) (in realtà di tante, ma quando ho capito come fare per una ....)
So che la risoluzione in dpi non è una caratteristica dell'immagine, la caratteristica semmai è la sua misura in pixel (es: 1908x477).
OK. Però se apro l'immagine con Gimp, esso mi dice che la risoluzione è 200x200 dpi. La domanda, e scusate la prolissità, è quindi la seguente: come fa Gimp a dirmi la risoluzione? Che funzione usa, se usa una funzione?
Perché io non posso ottenere l'informazione che Gimp, evidentemente, ottiene?
Vi ringrazio per qualsiasi aiuto vogliate darmi
Marco
marco0608 è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2011, 13:01   #2
Master FO
Member
 
L'Avatar di Master FO
 
Iscritto dal: Apr 2005
Città: Campagnola Emilia
Messaggi: 202
Ma con che linguaggio lo vuoi fare?
__________________
"L'informatica è come la fisica.La differenza è che mentre la fisica è governata da leggi naturali, in informatica sei tu il creatore.
All'interno del computer puoi essere un Dio."
Linus Torvalds
Master FO è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2011, 13:17   #3
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Se parliamo di formato JPEG, mi pare che il valore dei dpi sia memorizzato nei metadati dell'immagine stessa, percui basta leggero da li. Questo è il "cosa" fare, per il "come" dipende dal linguaggio di programmazione, se devi realizzare un programma.

Sennò su Windows basta fare click destro sull'immagine, proprietà, riepilogo, avanzate: vengono visualizzati alcuni valori relativi ai metadati dell'immagine, tra cui i dpi.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2011, 16:00   #4
marco0608
Junior Member
 
Iscritto dal: Oct 2011
Messaggi: 6
Grazie a Master FO e a banryu79.
IL linguaggio non è così importante, potrebbe essere anche C++ ma VB andrebbe meglio.
banryu79 mi dice che il dato che cerco (200 per 200dpi) è nel file jpg.
Io non sono un grande esperto nell'analisi del contenuto dei files grafici, ma un tentativo di questo genere l'avevo fatto: per file jpg generati da photoshop, ad esempio, ero anche riuscito a farlo funzionare; ma la soluzione funzionava solo per quei files lì, se prendevo un JPG generato da una macchinetta digitale, ad esempio, saltava tutto: la posizione che andavo a cercare all'interno del file non conteneva più il dato cercato. (possibile anche che abbia toppato tutto, ti ripeto, non sono un gran ché in questa cosa ...)
Comunque grazie mille per le vostre risposte e se avete altre idee, vi ringrazio anticipatamente anche per quelle
marco0608 è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2011, 16:24   #5
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Non c'è una posizione fissa per questi metadati, perché il JPEG non li prevede.

In genere i programmi che generano file di questo tipo utilizzano un particolare tag JPEG che identifica la presenza di un blocco di dati di tipo "commento".

Il problema nasce proprio dal fatto che JPEG non ha mai standardizzato null'altro rispetto alle informazioni che trovi nello stream di dati normalmente, per cui in questa porzione di file ognuno può scriverci quello che vuole nel suo particolare formato.

Quindi, ricapitolando: recuperare il blocco di dati dei commenti è molto semplice (perché lo stream dati di JPEG è semplice da gestire: basta saltarli tutti e fermarsi davanti al tag dei commenti, appunto), ma poi devi scrivere un parser (XML, se non ricordo male, per Adobe) ed estrarti le informazioni che ti servono.

Il tutto sperando che altri programmi che generano JPEG adottino lo stesso formato.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2011, 16:32   #6
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2782
Non credo abbia senso memorizzare i dpi da qualche parte, riporto da wikipedia il motivo:
Quote:
I DPI si riferiscono sempre a una densità "fisica" dei punti sia che siano stampati o visualizzati su un monitor, per una immagine digitale memorizzata in un computer parlare di DPI non ha nessun senso fino al momento in cui non viene stampata.
Quindi credo che il valore che ti mostra GIMP sia basato sulla dimensione del monitor e la sua risoluzione.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2011, 16:36   #7
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Qui c'è un'utility freeware che pare legga i tag Exif presenti in una jpeg:
http://www.kiwiczech.net/index.php?menu=353&sub=4

Non so cosa devi farci con questa informazioni, forse è più facile indicarti una soluzione valida se ci racconti cosa devi fare, a che scopo vuoi recuperare queste info.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2011, 17:02   #8
marco0608
Junior Member
 
Iscritto dal: Oct 2011
Messaggi: 6
Grazie

Grazie a tutti.
Cdimauro mi dà la spiegazione al perché le mie 3 righe di codice funzionavano solo con file di photoshop. Grazie: adesso perderò qualche nottata a vedere se riesco a scrivere un parser XML come mi suggerisci.
Sì, hai ragione tu, banryu79 (ho scaricato il programmino, ora me lo studio un po'), te lo dico volentieri: ho sviluppato un catalogo fotografico per i miei clienti (orafi). Questi hanno assolutamente bisogno che l'immagine stampata sia identica in dimensioni a quella reale (1:1).
Per fare questo ho bisogno di sapere, quando carico l'immagine, le sue dimensioni in mm (non in pixel, ovviamente, poiché senza la "densità", come mi ricorda wingman87, i pixel non mi dicono nulla ...).
Le dimensioni in pixel le ho, se avessi anche i dpix e dpiy potrei facilmente trasformare i pixel in mm e stampare, di conseguenza, su qualsivoglia stampante immagini in grandezza naturale.
Le immagini sono scansionate in genere con risoluzione di 200dpi, ma solo in genere, purtroppo ... A volte anche 150, a volte 300 ecc...
Grazie ancora a tutti, siete forti: oggi sono più vicino alla soluzione di quanto lo sia stato mai in questi mesi ...
marco0608 è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2011, 18:48   #9
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Non so che esperienza hai di programmazione, ma scrivere un parser XML non è complicato, specialmente col linguaggio e/o lo strumento giusto.

Ad esempio in Python lo si fa con poche righe di codice. Guardati l'esempio che c'è poco dopo la descrizione della classe ElementTree.

Poiché hai parlato di C++ e VB, puoi dare un'occhiata agli esempi di XmlSerializer.Deserialize.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2011, 10:22   #10
rеpne scasb
Senior Member
 
Iscritto dal: May 2008
Messaggi: 533

Ultima modifica di rеpne scasb : 18-06-2012 alle 17:20.
rеpne scasb è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2011, 10:59   #11
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da rеpne scasb Guarda i messaggi
... Eric Hamilton non sarebbe contento.
Ehm... chi?

e comunque: Repne!!!
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2011, 11:28   #12
marco0608
Junior Member
 
Iscritto dal: Oct 2011
Messaggi: 6
fatto!

Grazie a tutti, a Cdimauro e a rеpne scasb.
Sì, rеpne scasb, io so veramente poco di Hamilton, ma ieri notte mi sono aperto una ventina di file jpg e li ho un po' studiati.
Dopo vari tentativi e sconcertanti contonate sono arrivato alla conclusione che gli offset che tu mi indichi (quasi, per me sono 15 e 17) sono quelli delle risoluzioni che cerco. Ora tu me lo confermi: grazie così il problema l'abbiamo risolto.
interessante però la precisazione che mi fai: "...quindi se leggerai la word con una CPU intel ricordati di scambiare nella word il primo byte con il secondo byte che leggi. " Per questo io prendo l'offset 15 e 17?
In genere le cpu che trovo sono proprio intel (per intel intendi proprio Intel o x86?)
Secondo te, dovessi incontrare cpu non-intel dovrei andare all'offset 14 e 16?
Grazie e scusa l'ignoranza, sto imparando ....

Queste le tre righe di codice che ho scritto e che, pare, funzionino ...
li_FileNum = FileOpen(as_nome_imm, StreamMode!, Read!, Shared!)
if as_h_v='V' then
ll_pos = FileSeek( li_FileNum, 17, FromBeginning!)
else
ll_pos = FileSeek( li_FileNum, 15, FromBeginning!)
end if
fileread(li_FileNum, ls_dpix)

li_ris=asc(left(ls_dpix, 1))

messagebox("E", li_ris)

fileclose(li_FileNum)
Grazie ancora a tutti
__________________
Ogni riga di codice genera almeno un errore ...

Ultima modifica di marco0608 : 20-10-2011 alle 11:40.
marco0608 è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2011, 14:24   #13
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Ehm... chi?

e comunque: Repne!!!
http://www.jpeg.org/jpeg/index.html

@marco0608: per ogni dato che non sia un byte devi eseguire un "byte-swap" della "word" letta, oppure leggi un byte alla volta (dal più significativo al meno significativo) e ricostruisci la "word" tenendo conto del "peso" di ogni byte.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2011, 23:03   #14
marco0608
Junior Member
 
Iscritto dal: Oct 2011
Messaggi: 6
azz. hai ragione!!!!

Certo, Cdimauro, hai ragione ...
Si vede che ieri notte avevo più sonno del solito ...
Grazie e ciao

p.s.:
qui il codice corretto (servisse mai a qualcuno ...)

integer li_FileNum, li_ris, i, li_valore
string ls_dpix[]
long ll_pos

li_FileNum = FileOpen(as_nome_imm, StreamMode!, Read!, Shared!, Replace!)
for i= 1 to 2
if as_h_v='V' then
ll_pos = FileSeek( li_FileNum, 15+i, FromBeginning!)
else
ll_pos = FileSeek( li_FileNum, 13+i, FromBeginning!)
end if
fileread(li_FileNum, ls_dpix[i])
next
li_ris=asc(ls_dpix[2])+asc(ls_dpix[1])*256

//messagebox("E", li_ris)

fileclose(li_FileNum)
return li_ris
__________________
Ogni riga di codice genera almeno un errore ...

Ultima modifica di marco0608 : 20-10-2011 alle 23:33.
marco0608 è offline   Rispondi citando il messaggio o parte di esso
Old 21-10-2011, 04:27   #15
LMCH
Senior Member
 
Iscritto dal: Jan 2007
Messaggi: 6287
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Qui c'è un'utility freeware che pare legga i tag Exif presenti in una jpeg:
http://www.kiwiczech.net/index.php?menu=353&sub=4
C'è anche una libreria in C++ che legge sia i tag "standard" che quelli di vari produttori di macchine fotografiche:
http://www.exiv2.org/
Supporta parecchi formati di immagine ed oltre ai tag Exif, legge anche IPTC ed XMP.
LMCH è online   Rispondi citando il messaggio o parte di esso
Old 21-10-2011, 10:03   #16
marco0608
Junior Member
 
Iscritto dal: Oct 2011
Messaggi: 6
Grazie

Grazie LMCH.
Ho scaricato la libreria, adesso guardo come implementarla...
Ciao a tutti e grazie ancora: erano mesi che cercavo questa soluzione ...
__________________
Ogni riga di codice genera almeno un errore ...
marco0608 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
Tutti gli sconti Apple su Amazon: tornan...
Altro che entry-level: due smartwatch Am...
Roscosmos ha posticipato (ancora) il lan...
Isar Aerospace si prepara al secondo lan...
Tory Bruno è entrato in Blue Orig...
Fujifilm lancia la cartuccia per archivi...
Dreame H15 Mix: la soluzione 7-in-1 per ...
AirPods Pro 3 in forte sconto su Amazon:...
36 offerte Amazon, molte appena partite:...
2 caricatori multipli eccezionali: da 28...
OLED e 360 Hz a un prezzo senza preceden...
Roborock Q10 S5+ a un prezzo molto conve...
Upgrade PC a prezzo ridotto: le migliori...
Sono i 6 smartphone migliori su Amazon: ...
Google Pixel 9a a 361€, mai così ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 12:02.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v