2009-08-12 9 views
0

J'utilise webservice pour appeler la méthode dans businesslogics (une classe écrite en vb). Je suis en train de saisir inputppath et le chemin où je dois enregistrer l'image dans cette méthode.Je dois créer une vignette et aussi Je dois sauver l'image originale. Moyens je veux sauver masterimage dans un dossier et son thumnail dans le dossier différent. J'ai utilisé le code suivantComment enregistrer l'image dans le dossier

Public Function CreateThumbNails(ByVal intWidth As Integer, ByVal strInputFilePath As String, ByVal strFileName As String, ByVal strOutputFilePath As String) As String 
      Dim lnWidth As Integer = intWidth 
      Dim lnHeight As Integer = 100 
      Dim bmpOut As System.Drawing.Bitmap = Nothing 
      Try 
       Dim loBMP As New Bitmap(strInputFilePath) 
       Dim lnRatio As Decimal 
       Dim lnNewWidth As Integer = 0 
       Dim lnNewHeight As Integer = 0 
       If loBMP.Width < lnWidth AndAlso loBMP.Height < lnHeight Then 
        lnNewWidth = loBMP.Width 
        lnNewHeight = loBMP.Height 
       End If 
       If loBMP.Width > loBMP.Height Then 
        lnRatio = CDec(lnWidth)/loBMP.Width 
        lnNewWidth = lnWidth 
        Dim lnTemp As Decimal = loBMP.Height * lnRatio 
        lnNewHeight = CInt(lnTemp) 
       Else 
        lnRatio = CDec(lnHeight)/loBMP.Height 
        lnNewHeight = lnHeight 
        Dim lnTemp As Decimal = loBMP.Width * lnRatio 
        lnNewWidth = CInt(lnTemp) 
       End If 

       ' *** This code creates cleaner (though bigger) thumbnails and properly 
       ' *** and handles GIF files better by generating a white background for 
       ' *** transparent images (as opposed to black) 

       bmpOut = New Bitmap(lnNewWidth, lnNewHeight) 
       Dim g As Graphics = Graphics.FromImage(bmpOut) 
       g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic 
       g.FillRectangle(Brushes.White, 0, 0, lnNewWidth, lnNewHeight) 
       g.DrawImage(loBMP, 0, 0, lnNewWidth, lnNewHeight) 
       loBMP.Dispose() 
       bmpOut.Save(HttpContext.Current.Server.MapPath(strOutputFilePath) + strFileName) 
       bmpOut.Dispose() 

       Return strOutputFilePath + strFileName 
      Catch e As Exception 

       Throw New Exception("ThumbNail Creation Failed") 
       Return "" 
      End Try 
     End Function 

Quel code dois-je inclure pour sauvegarder l'image originale dans un autre dossier.Peut-on aider?

+0

Une méthode appelée CreateThumbnails est-elle vraiment le bon endroit pour faire une copie de l'image maître? Vous voudrez peut-être faire cela ailleurs (ou changer le nom de la méthode) –

Répondre

1

EDIT déclencheur heureux. vous n'avez pas besoin de l'enregistrer depuis le bitmap. le fichier est déjà là. il suffit de copier le fichier.

Si je comprends votre question, vous voulez enregistrer l'image avant de la manipuler à un nouvel emplacement sur le serveur.

Ce fichier existe déjà en tant que fichier sur le serveur. L'emplacement du fichier de ce fichier est transmis dans votre fonction en tant que paramètre (strInputFilePath).

La chose la plus simple à faire serait d'utiliser File.Copy() pour copier le fichier à l'emplacement désiré.

+0

quel code je dois écrire après avoir disposé pour enregistrer l'image originale – user42348

+0

Une erreur générique s'est produite dans GDI + .Cette erreur arrive à la ligne loBMP.Save (strMyOtherPath) .Quelle peut être la raison? – user42348

Questions connexes