Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming
Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming
Questo mouse ultraleggero, con soli 36 grammi di peso, è stato concepito per offrire un'esperienza di gioco di alto livello ai professionisti degli FPS, grazie al polling rate a 8.000 Hz e a un sensore ottico da 33.000 DPI. La recensione esplora ogni dettaglio di questo dispositivo di gioco, dalla sua agilità estrema alle specifiche tecniche che lo pongono un passo avanti
Nokia Innovation Day 2025: l’Europa ha bisogno di campioni nelle telecomunicazioni
Nokia Innovation Day 2025: l’Europa ha bisogno di campioni nelle telecomunicazioni
Dal richiamo di Enrico Letta alla necessità di completare il mercato unico entro il 2028 alla visione di Nokia sul ruolo dell’IA e delle reti intelligenti, il Nokia Innovation Day 2025 ha intrecciato geopolitica e tecnologia, mostrando a Vimercate come la ricerca italiana contribuisca alle sfide globali delle telecomunicazioni
Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza
Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza
OPPO Reno14 F 5G si propone come smartphone di fascia media con caratteristiche equilibrate. Il device monta processore Qualcomm Snapdragon 6 Gen 1, display AMOLED da 6,57 pollici a 120Hz, tripla fotocamera posteriore con sensore principale da 50MP e generosa batteria da 6000mAh con ricarica rapida a 45W. Si posiziona come alternativa accessibile nella gamma Reno14, proponendo un design curato e tutto quello che serve per un uso senza troppe preoccupazioni.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-10-2011, 11: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, 12: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, 12: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, 15: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, 15: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, 15:32   #6
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2774
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, 15: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, 16: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, 17: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, 09:22   #10
rеpne scasb
Senior Member
 
Iscritto dal: May 2008
Messaggi: 533

Ultima modifica di rеpne scasb : 18-06-2012 alle 16:20.
rеpne scasb è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2011, 09: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, 10: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 10:40.
marco0608 è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2011, 13: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, 22: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 22:33.
marco0608 è offline   Rispondi citando il messaggio o parte di esso
Old 21-10-2011, 03:27   #15
LMCH
Senior Member
 
Iscritto dal: Jan 2007
Messaggi: 6090
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, 09: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


Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming Un fulmine sulla scrivania, Corsair Sabre v2 Pro...
Nokia Innovation Day 2025: l’Europa ha bisogno di campioni nelle telecomunicazioni Nokia Innovation Day 2025: l’Europa ha bisogno d...
Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza Sottile, leggero e dall'autonomia WOW: OPPO Reno...
Destiny Rising: quando un gioco mobile supera il gioco originale Destiny Rising: quando un gioco mobile supera il...
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo Plaud Note Pro convince per qualità e int...
Super sconti del weekend Amazon: 5 novit...
Dreame non si ferma più: tra le n...
Samsung Galaxy Buds3 FE a meno di 95€ su...
Praticamente regalate: 135€ per le Squie...
Si rinnovano i coupon nascosti di settem...
Amazon sconta i componenti: occasioni d'...
Vibe coding: esplode la domanda di esper...
Ring Intercom su Amazon: citofono smart ...
Addio regie complicate: un'AI gestir&agr...
Xbox, nuovo aumento dei prezzi negli Sta...
Adesso ci si può laureare in stor...
Impact.com ridefinisce il performance ma...
Nintendo non considera le mod dannose pe...
Dreame inaugura il suo flagship store a ...
OpenAI e Jony Ive: in arrivo un disposit...
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: 10:11.


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