2009-06-26 6 views
0

Ceci est le code que je suis arrivé de This LinkRedimensionner mon image sur le téléchargement ne fonctionne pas - quel doit être mon tampon?

Je veux que l'utilisateur de télécharger une image, puis la redimensionner .............

Public Sub ResizeFromStream(ByVal ImageSavePath As String, ByVal MaxSideSize As Integer, ByVal Buffer As System.IO.Stream) 

    Dim intNewWidth As Integer 
    Dim intNewHeight As Integer 
    Dim imgInput As System.Drawing.Image = System.Drawing.Image.FromStream(Buffer) 


    'Determine image format 
    Dim fmtImageFormat As ImageFormat = imgInput.RawFormat 

    'get image original width and height 
    Dim intOldWidth As Integer = imgInput.Width 
    Dim intOldHeight As Integer = imgInput.Height 

    'determine if landscape or portrait 
    Dim intMaxSide As Integer 

    If (intOldWidth >= intOldHeight) Then 
     intMaxSide = intOldWidth 
    Else 
     intMaxSide = intOldHeight 
    End If 

    If (intMaxSide > MaxSideSize) Then 
     'set new width and height 
     Dim dblCoef As Double = MaxSideSize/CDbl(intMaxSide) 

     intNewWidth = Convert.ToInt32(dblCoef * intOldWidth) 
     intNewHeight = Convert.ToInt32(dblCoef * intOldHeight) 

    Else 

     intNewWidth = intOldWidth 
     intNewHeight = intOldHeight 
    End If 
    'create new bitmap 
    Dim bmpResized As Drawing.Bitmap = New Drawing.Bitmap(imgInput, intNewWidth, intNewHeight) 

    'save bitmap to disk 
    bmpResized.Save(ImageSavePath, fmtImageFormat) 

    'release used resources 
    imgInput.Dispose() 
    bmpResized.Dispose() 
    Buffer.Close() 

End Sub 

Maintenant, quand je clique sur mon bouton de soumission, il doit exécuter mon code mais je ne suis pas sûr de ce que l'entrée doit être pour le champ Buffer?

Protected Sub btnUpload_Click() Handles btnUpload.Click 

    ResizeFromStream("~Pics", 200, ??????????) 

End Sub 

Merci d'avance!

Modifier J'ai besoin d'obtenir mon image à partir du contrôle de téléchargement de fichiers!

+0

Eh bien, où voudriez-vous que les données d'image viennent? –

+0

De mon contrôle de téléchargement de fichier appelé FileUpload1 – Etienne

Répondre

0

Vous pouvez passer un objet de flux comme ceci:

Dim fs As New FileStream("C:\file.jpg", FileMode.Open) 

ResizeFromStream("~Pics", 200, fs) 

Ainsi, le code serait d'effectuer IO sur le fichier « file.jpg ». C'est un exemple très approximatif, mais comme l'a demandé Jon Skeet, l'emplacement de l'origine de l'image est important. Mon exemple est simplement le type «commencez-vous».

+0

Mais je veux l'obtenir à partir de mon contrôle FileUpload appelé FileUpload1 – Etienne

+0

Je ne suis pas familier avec le contrôle FileUpload, mais vous ne pouvez pas utiliser: FileUpLoad1.SaveAs ("C: \" & FileUpLoad1.FileName) Dim fs comme nouveau FileStream ("C: \" & FileUpload1.FileName ", FileMode.Open) ResizeFromStream (" ~ Photos ", 200, fs) –

0

FileUpload.FileContent vous obtenez un flux pour le contenu du fichier.

+0

Donc vous dites que je dois le faire dans mon méthode btnUpload_Click? ResizeFromStream ("~ Photos", 200, myFile.FileContent) Parce que quand je fais rien ne se passe, le fichier ne soit pas téléchargé. – Etienne

+0

Oui. Vous avez oublié de pu t dans un nom de fichier. ResizeFromStream ("~ Photos \ FILENAME.JPG", 200, myFile.FileContent) (Vous pouvez obtenir le nom de fichier d'origine de FileUpload je pense) – AndrewVos

+0

Oui, de FileUpload.FileName. Donc ResizeFromStream (Path.Combine ("~ Photos", FileUpload.FileName), 200, myFile.FileContent) – cdm9002

Questions connexes