Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - salvataggio immagine da una picturebox solo 96 dpi ?
Forum - Visual Basic 6 - salvataggio immagine da una picturebox solo 96 dpi ? - Pagina 2

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
Carlo (Member)
Guru


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 13:53
Venerdì, 11/06/2021
Ciao, premetto che non ho una risposta pronta in VB6, e usare GDI+ in VB6 è fattibile ma a quale scopo?
Ammetti che il codice lo hai copiato, e se hai un progetto VB6 che devi mantenere ne capisco la ragione.
Anche se hai la voglia di usare VB6 per forza perché vuoi sperimentare cosa riesci a fare, ancora lo capisco.

Invece se vuoi usare GDI+ per ottenere lo scopo che ti preme, scalare un'immagine a diversi DPI, per ottenere un'immagine risultante con risoluzione maggiore per darla in pasto ad un OCR, sappi che i linguaggi .Net sfruttano la GDI+ in modo nativo.

Ecco come è il codice in VB .Net che fa molto di più di quello che hai postato in VB6:

Codice sorgente - presumibilmente VB.NET

  1. '' cambia DPI
  2. Dim bmp1 As New Bitmap("bmpIn.bmp") ' bmpIn nome immagine da caricare
  3. Dim nuovabmp As New Bitmap(bmp1.Width * 4, bmp1.Height * 4) ' 4x (per passare da 72 a 300 DPI)
  4. Dim g1 As Graphics = Graphics.FromImage(nuovabmp) ' nuovabmp come layer grafico
  5. g1.InterpolationMode = InterpolationMode.HighQualityBicubic ' alta qualità scaling
  6. g1.DrawImage(bmp1, 0, 0, nuovabmp.Width, nuovabmp.Height) ' scalatura
  7. nuovabmp.SetResolution(300, 300) ' set DPI
  8. nuovabmp.Save("bmp300HQbicubic.bmp", Drawing.Imaging.ImageFormat.Bmp) ' salvo il risultato



in allegato l'eseguibile con una bmp da 96DPI, se esegui BMPsuBMP.exe la porta a 4 volte la risoluzione e la salva a 300DPI

Prova una delle tue immagini rinominandole, per vedere se il programma fa quello che cerchi.
Naturalmente una volta che usi .Net altre migliaia di possibilità a livello grafico ti si schiudono, permettendoti di usare il tempo per sviluppare software, invece che spendere tempo ad adattare in VB6 cose per il quale non è stato progettato.

Non ti voglio forzare a fare nulla di quello che non ti piace, anzi se me ne dai motivo sono disposto a riesumare un mio PC WinXP con VB6, per aiutarti.


Carlo ha allegato un file: DPI.ZIP (75993 bytes)
Clicca qui per scaricare il file

Ultima modifica effettuata da Carlo il 11/06/2021 alle 14:36


in programmazione tutto è permesso
PM Quote
Avatar
Pino1946 (Normal User)
Newbie


Messaggi: 10
Iscritto: 09/04/2013

Segnala al moderatore
Postato alle 14:15
Venerdì, 11/06/2021
Ciao Carlo,

grazie per la cortesia !

Al momento sono in giro e, con calma, leggerò per bene e rifletterò.

Iniziare col VB.Net, credo comunque di escluderlo perchè sarebbe troppo "vasto" per me.

L'allegato (BMPsuBMP.exe) che potrebbe aiutarmi ... non lo vedo, come faccio a scaricarlo ?

Poi, ti farò sapere ... se ti interessa !

Per il momento, ancora un grande "GRAZIE" !

Buona giornata

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 16:35
Venerdì, 11/06/2021
Sotto al mio post, devi vedere Carlo ha allegato un file...
Ma da cellulare, per vederlo devi caricare il sito in modalità classica.

Ho aggiunto due righe di codice in modo che hai un programma che carica qualsiasi file grafico, puoi cambiare zoom, qualità di scaling, DPI, e salvare in PNG, BMP, JPG e TIFF, puoi vedere in tempo reale quello che fai.

In VB .Net è tutto facile, dissento con la tua affermazione: non se ne parla di passare a .Net perché è troppo vasto.
Se resti a VB6, i tuoi programmi sono destinati a produrre risultati incerti sotto Win10, gli sforzi che metti in campo non sono ripagati, invece se li canalizzi in .Net, sono immediatamente percepibili.

Non è una predica, ma un tentativo di farti spendere il tempo in una direzione che ti darà soddisfazione... :heehee:
Pensa quanto codice avresti dovuto scrivere in VB6 per fare il programma che ti ho postato.


Carlo ha allegato un file: DPIchanger.zip (10967 bytes)
Clicca qui per scaricare il file

Ultima modifica effettuata da Carlo il 12/06/2021 alle 19:05


in programmazione tutto è permesso
PM Quote
Avatar
Pino1946 (Normal User)
Newbie


Messaggi: 10
Iscritto: 09/04/2013

Segnala al moderatore
Postato alle 12:13
Lunedì, 14/06/2021
Ciao Carlo,

non ti ho dimenticato: non dimentico mai uno che mi aiuta e che reputo un amico, anche se lontano !

Ho avuto un problema col pc, perciò non riuscivo nemmeno a vedere il tuo link (da pc) e cliccando su "versione classica", mi dava messaggi di errore !

Sono d'accordissimo con te, al riguardo dei consigli che mi hai dato, ma preciso che:

-  non vendo ma, come te (sicuramente), aiuto gli amici che hanno un qualche problema e, come dicevo, recuperare software, installarlo (pare facile ma, a volte, installa qua, installa la,  installa gli aggiornamenti, etc., etc.), imparare un nuovo linguaggio ..., può diventare pesante e, per una o due volte che ne avrei bisogno ... capisci ?

- ... come dicevamo in tedesco "... me fà male 'a capa" !   Parli il tedesco ?   Scherzo !

Al riguardo della tua routine, funziona bene, solo che purtroppo il risultato, anche a 300 dpi, in quanto a OCR lascia a desiderare; quindi, presumo che ciò che ho letto al riguardo dei 300 dpi, non sempre vada bene.

Fa niente, mi accontenterò dell'OCR che passa il convento !

Grazie ancora per le tue premure e, semmai, avessi bisogno di me (nel mio piccolo) sicuramente cercherei di ricambiare !

Buona giornata

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 10:49
Martedì, 15/06/2021
Non so come usi l'OCR, se stampi un'immagine contenente testo e poi la passi ad uno scanner con l'OCR, i DPI contano, ma se li hai aumentati artificiosamente, non è che crei quello che non esiste.:asd:
Se incolli un'immagine in un documento Word e poi usi l'OCR di Word, i DPI non contano perché nel documento Word puoi ridimensionare l'immagine a piacere (ne cambi i DPI), in questo caso conta la risoluzione in pixel dell'immagine originale, più è definita e precisa meglio è.
Se usi un OCR che carica un'immagine, quello che conta è la risoluzione in pixel dell'immagine, i DPI non contano, in questo caso cambiare la risoluzione in pixel dell'immagine originale, modificano la risposta dell'OCR, ma non ti aspettare grandi differenze.
Per esempio hai un'immagine che contiene un testo ben definito ma che usa un font piccolo, quando lo passi all'OCR magari in viene riconosciuto come m, in questo caso passare l'immagine nel mio programma, scalare a 2x con ricampionamento HQ, può risolvere il problema.

Ciao, alla prossima.

Ultima modifica effettuata da Carlo il 15/06/2021 alle 13:10


in programmazione tutto è permesso
PM Quote
Avatar
Pino1946 (Normal User)
Newbie


Messaggi: 10
Iscritto: 09/04/2013

Segnala al moderatore
Postato alle 16:40
Giovedì, 17/06/2021
Eccomi !

Allora, il progetto è di catturare una parte dello schermo (col testo), salvarla in bmp, trasformarla in tif (alcuni software lavorano solo col tif), darla in pasto ai software di OCR e, il risultato, farlo leggere da Merlino.

Il progetto è molto più vasto ma, quanto sopra, è il "problema" e/o fulcro della situazione.

Ho provato con Tesseract 5.0, ABBYY 15.0 e altri: vanno bene ma, come dicevi tu, c'è sempre un carattere o gruppo di caratteri che non vengono riconosciuti bene e, a meno di miracoli, per il momento sarei orientato al classico MODI, almeno sarei autonomo e il pgm sarebbe più leggero ... appena trovo un po' più di tempo !

A proposito, sapresti dirmi (magari con riga di esempio e API corrispondente) come disegnare un rettangolo sul desktop ... con VB6 ?

La parte di schermo da catturare, l'ho già fatta e funziona bene, vorrei però aggiungere un "qualcosa per gli occhi" di chi userà 'sta routine ... quando l'avrò finita !

A presto !

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 20:50
Giovedì, 17/06/2021
In VB6?, sicuramente ho scritto qualcosa tempo fa, ma la memoria scricchiola, difficile rispondere senza aprire qualche vecchio progetto.
In VB.Net ho pubblicato OCR_FromScreen:

http://www.pierotofy.it/pages/sorgenti/dettagli/19620-OCR= ...

Per scegliere la porzione dello schermo da catturare ho utilizzato la proprietà TransparencyKey, che permette di rendere trasparente un colore a scelta.

In VB6 sicuramente si può fare importando GDI+, ma al solito perché complicarsi la vita?
Spero che trovi qualche volenteroso che ancora usa VB6 e ha le risposte che ti servono, personalmente dovrei provare e non ho più VB6 in questo PC.

Anche disegnare un rettangolo sopra al desktop non è difficile in .Net, ti ho allegato un eseguibile provalo, primo clik = punto di partenza di un rettangolo (tasto sinistro mouse), poi ti muovi con il mouse e vedrai il rettangolo con tanto di coordinate, secondo clik = punto di fine, il rettangolo resta visualizzato, invece se clicchi con il tasto destro il programma si chiude.

Attenzione il programma non fa nulla di utile e non è perfetto, è solo per saggiare le potenzialità di .Net, l'ho scritto in 2 minuti, e occupa 10 righe.


Carlo ha allegato un file: Rectangle_Screen.zip (4953 bytes)
Clicca qui per scaricare il file

Ultima modifica effettuata da Carlo il 18/06/2021 alle 10:07


in programmazione tutto è permesso
PM Quote
Avatar
Pino1946 (Normal User)
Newbie


Messaggi: 10
Iscritto: 09/04/2013

Segnala al moderatore
Postato alle 12:37
Venerdì, 18/06/2021
Help !

I need somebody ... help, cantava qualcuno tempo fa.

Di nuovo non riesco a vedere l'allegato: nè con Firefox, nè con Chrome, nè con Tor e dovrei di nuovo ... !

Ho tentato anche con le impostazioni dei browser ... niente !

Un qualche consiglio/trucco ?

PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo