Piccolo codice da vb.net a c#. (ThumbNail)

sabato 06 febbraio 2010 - 23.08

Anonimo Profilo | Senior Member

Salve, sto convertendo un codice che ho trovato nel forum www.asp.net , però è in vb.net , io vorrei convertirlo in c#
Per adesso ho quasi fatto ma ci son alcuni errori di parole chiavi che in c# non esistono ma ci sono solo in vb.net..

vi posto il file originale:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

e questo quello che ho convertito io:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
ed gli errori ottengo questi:

Errore 1 Il nome 'InStr' non esiste nel contesto corrente d:\websiteup\Default.aspx.cs 36 63 d:\websiteup\
Errore 2 La corrispondenza migliore del metodo di overload per 'System.Drawing.Image.FromStream(System.IO.Stream)' presenta alcuni argomenti non validi d:\websiteup\Default.aspx.cs 44 32 d:\websiteup\
Errore 3 Argomento '1': impossibile convertire da 'string' a 'System.IO.Stream' d:\websiteup\Default.aspx.cs 44 50 d:\websiteup\
Errore 4 Il nome 'Int' non esiste nel contesto corrente d:\websiteup\Default.aspx.cs 73 33 d:\websiteup\
Errore 5 Il nome 'Int' non esiste nel contesto corrente d:\websiteup\Default.aspx.cs 76 28 d:\websiteup\
Errore 6 Il nome 'Int' non esiste nel contesto corrente d:\websiteup\Default.aspx.cs 90 32 d:\websiteup\
Errore 7 Il nome 'Int' non esiste nel contesto corrente d:\websiteup\Default.aspx.cs 93 28 d:\websiteup\
Errore 8 Il nome 'Int' non esiste nel contesto corrente d:\websiteup\Default.aspx.cs 107 32 d:\websiteup\
Errore 9 Il nome 'Int' non esiste nel contesto corrente d:\websiteup\Default.aspx.cs 110 28 d:\websiteup\
Errore 10 Il nome 'Int' non esiste nel contesto corrente d:\websiteup\Default.aspx.cs 113 28 d:\websiteup\


vi posto anche la default.aspx:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Provate in questo modo: Vs2008/2005 -> Crea Sito web -> e scegliete -> C# -> E Dopo fatte play... e vi salta quelli errori lì.
come si protebbe convertire ?

graie.

paoval72 Profilo | Senior Member

Ciao, provo a darti una mano. Io lavoro in C#, ma ogni tanto mi tocca "interpretare" VB!
1) Errore 1 Il nome 'InStr' non esiste nel contesto corrente d:\websiteup\Default.aspx.cs 36 63 d:\websiteup\
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Se ho capito bene, il metodo InStr dovrebbe corrispondere all'IndexOf in C# (cerca la prima occorrennza di un carattere in una stringa)
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

2) Errore 2 La corrispondenza migliore del metodo di overload per 'System.Drawing.Image.FromStream(System.IO.Stream)' presenta alcuni argomenti non validi d:\websiteup\Default.aspx.cs 44 32 d:\websiteup\
Errore 3 Argomento '1': impossibile convertire da 'string' a 'System.IO.Stream' d:\websiteup\Default.aspx.cs 44 50 d:\websiteup\
In C# il metodo Image.FromStream si aspetta di ricevere una variabile di tipo System.IO.Stream e non di tipo string (come già facevi in VB). E ovviamente poi va in errore anche nel tentativo di castare la string in stream

3) Errore 4 Il nome 'Int' non esiste nel contesto corrente d:\websiteup\Default.aspx.cs 73 33 d:\websiteup\
Errore 5 Il nome 'Int' non esiste nel contesto corrente d:\websiteup\Default.aspx.cs 76 28 d:\websiteup\
Errore 6 Il nome 'Int' non esiste nel contesto corrente d:\websiteup\Default.aspx.cs 90 32 d:\websiteup\
Errore 7 Il nome 'Int' non esiste nel contesto corrente d:\websiteup\Default.aspx.cs 93 28 d:\websiteup\
Errore 8 Il nome 'Int' non esiste nel contesto corrente d:\websiteup\Default.aspx.cs 107 32 d:\websiteup\
Errore 9 Il nome 'Int' non esiste nel contesto corrente d:\websiteup\Default.aspx.cs 110 28 d:\websiteup\
Errore 10 Il nome 'Int' non esiste nel contesto corrente d:\websiteup\Default.aspx.cs 113 28 d:\websiteup\
Il cast, C# richiede questa formula:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Spero di esserti stato d'aiuto.
Ciao,
PV

Anonimo Profilo | Senior Member

ok, grazie mille.

apena posso provo adesso devo andar via, e prima ero al ristorante...

apena provo di faccio sapere.

Anonimo Profilo | Senior Member

ok, ora mi da solo questi:

Errore 1 La corrispondenza migliore del metodo di overload per 'System.Drawing.Image.FromStream(System.IO.Stream)' presenta alcuni argomenti non validi D:\websiteup\Default.aspx.cs 44 32 D:\websiteup\
Errore 2 Argomento '1': impossibile convertire da 'string' a 'System.IO.Stream' D:\websiteup\Default.aspx.cs 44 50 D:\websiteup\

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Vedi mi da errore qui:

Bitmap upBmp = Bitmap.FromStream(FileUpload1.FileName);




:SCUSA MA HO PROVATO IN QUESTO MOMENTO..

paoval72 Profilo | Senior Member

Non so se hai già provato le correzioni che ti ho detto per quest'ultimo errore rimasto.
Comunque, provo a ripeterle.
In C# il metodo FromStream() si aspetta uno stream:
System.Drawing.Image.FromStream(FileUpload1.FileContent);
Dove il FileContent dovrebbe essere l'oggetto Stream che punta al tuo file da uploadare
Così dovrebbe anche risolversi l'errore di conversione, perchè col tuo codice stai passando un oggetto string anzichè un oggetto stream, come si aspetta.
Fammi sapere.
Ciao,
PV

Anonimo Profilo | Senior Member

niente,
si avevo già coretto tutto quello che mi hai scritto sopra.

solo che rimane sempre questo errore:
Bitmap upBmp = System.Drawing.Image.FromStream(FileUpload1.FileContent);

Ho provato anche cosi come mi hai detto tu.
e vs web developer 2008 express,
Mi da questo errore:
Errore 1 Impossibile convertire in modo implicito il tipo 'System.Drawing.Image' in 'System.Drawing.Bitmap'. È presente una conversione esplicita. Probabile cast mancante. D:\websiteup\Default.aspx.cs 44 32 D:\websiteup\

Come mai?.

grazie.

paoval72 Profilo | Senior Member

Scusa, non ci avevo fatto caso... Il metodo .fromStream restituisce un oggetto Image. Dovrebbe bastare un cast:
Bitmap upBmp = (Bitmap) System.Drawing.Image.FromStream(FileUpload1.FileContent);
Prova così e vedi poi se in debug ti restituisce quello che ti aspetti.
Ciao,
PV

Anonimo Profilo | Senior Member

ok, ci sono quasi, e grazie per l'aito che mi stai dando...

però ho un problema salva l'immagine bianca, cioè se apro la thumb e tutto sfondo bianco e non c'è l'immagine dove deveva fare la thumb.
Poi per bitmap , ho trovato la soluzione su google:

sarebbe stato cosi:
Bitmap upBmp = new Bitmap((Image.FromStream(FileUpload1.PostedFile.InputStream)));

ti posto il codice:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

come mai? . non è che percaso e il mid che ho trovato su google per l'alternativa di vb.net ma fatto in c#.
grazie.

Anonimo Profilo | Senior Member

ok, ho tolto il mid..
e ho messo cosi:
string upName = FileUpload1.FileName;
string filePath = "~/Upload/" + upName + "";

però salva immagine bianca come mai?.

grazie

paoval72 Profilo | Senior Member

Ciao. Il problema sta nelle funzioni di resize. Se le commenti, l'immagine ti apparirà esattamente come l'hai salvata. Invece, s eutilizzi le operazioni di ridimensionamento che ci sono nel tuo codice, l'immagine scompare perchè va in negativo la divisione di largehzza e altezza.
ad esempio, ponendo che ho un'immagine 800 X 600 e visto che newWidth è dichiarato costante a 300
if (upWidth > upHeight) { reDuce = newWidth / upWidth; // 300 diviso 800 dà zero newHeight = (int)(upHeight * reDuce); // 600 per zero dà zero

In questo caso, la nuova immagine ridimensionata risulta alta zero e quindi non visibile.

Anonimo Profilo | Senior Member

ciao, eccomi qua. scusa ma ho dovuto fare delle cose importanti...
ora ti ringrazio per l'aiuto,
però adesso invece di bianca me la salva in nero... non so come mai..

Ti allego il file progetto.

Cosi puoi provare anche te e nella cartella upload. vedi le immagini che mi vengono create nere.

Ti ringrazio molto.

ciao.

Anonimo Profilo | Senior Member

come si può risolvere?

grazie.

paoval72 Profilo | Senior Member

Ciao, come ti ho scritto, il problema sta nel codice del ridimensionamento, che non funziona. La cosa è un po' complicata. Con l'aiuto di un collega vedo se riesco a recuperarti del codice d'esempio in questi giorni.
PV

Anonimo Profilo | Senior Member

ok, grazie mille. allora aspetto che tanto non ho fretta.
ti ringrazio molto.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5