Newsgroup: it.comp.lang.visual-basic
Titolo: Nessuno lo sa. Solo per esperto in materia

Ho postato più volte richieste simili,
ma non ho mai avuto risposta.
Non ci posso credere che nessuno lo sappia!
Le seguenti righe
dim a as fileinfo
...........
mImg = Image.FromFile(a.FullName)
su un file di grandi dimensioni (>150MB) mi rstituisce subito
memoria insufficiente.
Provando a mettere il file su cd (per cui a.fullname è "d:\file.tit")
non esegue nemmeno la lettura al file.
Come posso fare per crere una miniatura da questi file senza
avere l'errore?
Grazie a chi mi darà una risposta.
Ciao
P.

 Ho postato più volte richieste simili,
Parli di net
dall'help cito
"Creates an Image object from the specified file using embedded color
management information in that file."
....
"
The file remains locked until the Image object is disposed.
If the file does not have a valid image format or if GDI+ does not support
the pixel format of the file, this method throws an OutOfMemoryException
exception.
The useEmbeddedColorManagement parameter specifies whether the new Image
object applies color correction according to color management information
that is embedded in the image file. Embedded information can include
International Color Consortium (ICC) profiles, gamma values, and
chromaticity information.
"
.......ti basta come risposta?
Non sono un guru ma pigiare sull'F1 mi riesce!
-- 
Il Wodkino Nazionale è a : 
www.martek.it
Pagina Vb/Bestiario/Lamer Experience :
http://www.martek.it/go.asp?portamia=2
 New Entry nel
bestiario! :-)
---
Messaggio scannerizzato e certificato "Virus free" da AVG free edition.
Checked by AVG anti-virus system (
http://www.grisoft.com
).
Version: 6.0.773 / Virus Database: 520 - Release Date: 05/10/2004

 disposed.
Capisci perchč dal cd non funziona????
se sei riuscito a sbloccare (unlocckare) r/w un file sul cd sei un guru
davvero! (senza un masterizzatore RW)
-- 
Il Wodkino Nazionale č a : 
www.martek.it


 method throws an OutOfMemoryException exception.
questo invece per quanto riguarda quel file enorme....non č la dimensione(il
paging sull'hd serve ad ovviare alla pochezza della memoria)...ma quello che
c'č dentro!
-- 
Il Wodkino Nazionale č a : 
www.martek.it


 c'è dentro!
Già!
Solo a titolo di curiosità ti dico che il tasto F1 della mia tastiera è di 
colore diverso!
Comunnque, poichè faccio prima a leggere il mio help (che fra l'altro è in 
italiano),
lascio lo scrivere nelle news come ultima risorsa.
Non sono d'accordo sul fatto che sia un problema di "quello che c'è dentro"
al file, o almeno non nel caso mio.
Lo stesso file salvato in formato minore viene normalmente aperto ed 
elaborato.
In un formato maggiore segnala l'errore.
I miei PC hanno tutti da 2 a 4 GB di ram e comunque per tenere sotto 
controllo
il tutto, dapprima ho fatto la prova col debug riga per riga, guardando però
anche le risorse impiegate: 303 MB prima di aprire l'image e 303 MB dopo.
Poichè l'errore viene dato in un tempo molto veloce, ho provato a
far rallentare l'accesso al file mettendolo nel CD.
L'accesso al file non viene nemmeno eseguito.
Credo che il problema sia di altra natura, ma non so il perchè.
Quando entro in un ciclo "for next" in cui vengono create una serie di
Thumbnail l'errore avviene dopo qualche immagine.
Ho provato a voler liberare la memoria fra un'immagine e un'altra
senza esito positivo o comunqhe sempre con l'errore.
Da notare che facendo fare le miniature alle stesse immagini
ad un programmino fatto all'interno di CorelDraw 10 con VBA,
il tutto funziona. Ma credo che questa sia un'altra storia.
Trovo degli articoli più approfonditi sul trattamento delle immagini
e in particolare su un metodo veloce di creazione delle miniature?
Grazie
ciao
P. 

Credo che il problema sia di altra natura, ma non so il perchč.
Temo che il "prodigioso" .net sia ancora legato internamente a codice
vecchiotto.
Sopra i 150 MB probabilmente l'oggetto Image non riesce ad indirizzare
tutti i byte del file:
150 MB sono 
5736670464
 bytes, che, guarda caso, e' maggiore del
massimo che puo' contenere un unsigned int a 32 bit: 4294967294.
-- 
ciao, un hal di passaggio

 massimo che puo' contenere un unsigned int a 32 bit: 4294967294.
Non sono d'accordo :)
150*1024*1024=157.286.400 bytes :)
Un unsigned 32 può indirizzare 4GB esatti esatti.
termoPilucco
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 termoPilucco
Sarebbe possibile usare le librerie impiegate
da Corel Draw?
Cosa dovrei cercare?
Grazie, a tutti delle risposte!
ciao
P. 

e in particolare su un metodo veloce di creazione delle miniature?
Con Google č saltato fuori questo:
http://www.thecodeproject.com/csharp/imageresize.asp#xx597362xx
Ciao!

 
http://www.thecodeproject.com/csharp/imageresize.asp#xx597362xx
Nell'help in linea dice "
GetThumbnailImage funziona correttamente quando l'immagine di anteprima 
richiesta ha delle dimensioni pari a 120 x 120. Se si richiede un'immagine 
di anteprima di grandi dimensioni (ad esempio, 300 x 300) da un oggetto 
Image fornito di anteprima incorporata, potrebbe verificarsi una notevole 
perdita qualitativa dell'immagine di anteprima. Potrebbe essere 
consigliabile ridimensionare l'immagine principale (invece di ridimensionare 
l'anteprima incorporata) chiamando il metodo DrawImage.
"
In tutto questo che ci sia qualcosa di poco funzionante  o standardizzato è 
chiaro.
La cosa è supportata dal fatto che le immagini jpg create con il metodo 
GetThumbnail
non possono essere aperte da PhotoshopCS.
Abbiamo a disposizione potenti mezzi, poi per fare quella che per me è una 
banale miniatura
ci sono problemi.
Mah!
Grazie comunque,
Ciao
P. 

 ha
scritto nel messaggio
news:ck40sf$5g9$
1...@grillo.cs.interbusiness.it
MAH
io mi son fatto una classe in NEt per farmi le thumb....e le ho usate su un
sito internet...
non ho provato con immagini enormi....
mi incuriosice appena posso provo.....
che formato sono sti file più grandi di 150mb TIFF???
-- 
Il Wodkino Nazionale è a : 
www.martek.it



Nelle ultime prove erano una decina di files fra i 120MB e i 160MB circa.
Tutti in una cartella, ho provato sia usando FromStream che FromFile 
(f.fullname)
mImg = Image.FromStream(fs)
mNewImg = mImg.GetThumbnailImage(300, 300, Nothing, IntPtr.Zero)
Come ho già detto prova a riaprire il jpg creato con PhotoshopCS
mi restituisce tipo marcatore non valido.
Ciao
P.

 mi restituisce tipo marcatore non valido.
Da gugol: "The output format of GetThumbnailImage is PNG"
Ho provato con un'immagine 6000x4500:
funziona, ma converte in png.


 funziona, ma converte in png.
Ho provato anche partendo da una bitmap di 370MB (12000+9000):
funziona uguale, ma alloca fino a 170MB di memoria (da cui possibili out
of memory in agguato).



Ho messo a punto la procedura con Dispose usato come proprietą
img.dispose()
e facendo il debug riga per riga si vede perfettamente
la diminuzione dell'uso di memoria dopo ogni passaggio.
Perfetto!
Grazie
Ciao
P.