Redman31100
Messages postés167Date d'inscriptionmardi 11 septembre 2007StatutMembreDernière intervention11 février 2009
-
26 nov. 2008 à 03:41
Redman31100
Messages postés167Date d'inscriptionmardi 11 septembre 2007StatutMembreDernière intervention11 février 2009
-
26 nov. 2008 à 13:54
Voici mon code :
Dim Picture As Drawing.Bitmap = Drawing.Bitmap.FromFile("C:\Users\Redman\Desktop\aaa.jpg")
Dim TemporaryPicture As Drawing.Bitmap = Picture.Clone
Picture.Dispose()
Dim X As Integer = 916
Dim Y As Integer = 258
Dim Width As Integer = 321
Dim Height As Integer = 241
Dim FinalPicture As New Drawing.Bitmap(Width, Height, TemporaryPicture.PixelFormat)
For xi As Integer = X To X + Width - 1
For xy As Integer = Y To Y + Height - 1
FinalPicture.SetPixel(xi - X, xy - Y, TemporaryPicture.GetPixel(xi, xy))
Next
Next
Le programme lève une exception à : FinalPicture.Save("C:\Users\Redman\Desktop\aaa.jpg")
Voici l'erreur :
L'exception System.Runtime.InteropServices.ExternalException n'a pas été gérée
ErrorCode=-2147467259
Message="Une erreur générique s'est produite dans GDI+."
jmenfous
Messages postés117Date d'inscriptionmardi 21 janvier 2003StatutMembreDernière intervention 2 juillet 20091 26 nov. 2008 à 09:17
Pardon, l'éditeur de texte du forum ne semble pas aimer Opera don je te refais le code proprement avec les retours à la ligne:
Je n'ai malheureusement pas put tester ton code (soucis de taille
d'image dans la boucle for) Par contre je pense que ton souci provien
d'une impossiblité d'enregistrer ton image car elle est déjà ouverte
(souci plsu fréquent qu'il n'y parait)
Je te coneillerai plutôt
d'utiliser un code du genre :
' Chargement de l'image à dessiner
Dim
path as String = "...path vers ton image..."
Dim fs As New
System.IO.StreamReader(path)
Dim image As Image =
image.FromStream(fs.BaseStream)
fs.Close()
fs.Dispose()
fs = Nothing
'
Création du bitmap pour réaliser le dessin
Dim bmp As New
Bitmap(image.Width, image.Height)
' Création du graphics pour dessiner
Dim g As Graphics = Graphics.FromImage(bmp)
' On dessine l'image
' (ce
n'est qu'un exemple à adapter en focntion de ce que tu veux faire de
ton image) g.DrawImage(image, 0, 0)
jmenfous
Messages postés117Date d'inscriptionmardi 21 janvier 2003StatutMembreDernière intervention 2 juillet 20091 26 nov. 2008 à 09:11
Je n'ai malheureusement pas put tester ton code (soucis de taille d'image dans la boucle for)
Par contre je pense que ton souci provien d'une impossiblité d'enregistrer ton image car elle est déjà ouverte (souci plsu fréquent qu'il n'y parait)
Je te coneillerai plutôt d'utiliser un code du genre :
' Chargement de l'image à dessiner
Dim path as String = "...path vers ton iamge..."
Dim fs As New System.IO.StreamReader(path)
Dim image As Image = image.FromStream(fs.BaseStream)
fs.Close()
fs.Dispose()
fs = Nothing
' Création du bitmap pour réaliser le dessin
Dim bmp As New Bitmap(image.Width, image.Height)
' Création du graphics pour dessiner
Dim g As Graphics = Graphics.FromImage(bmp)
' On dessine l'image (ce n'est qu'un exemple à adapter en focntion de ce que tu veux faire de ton image)
g.DrawImage(image, 0, 0)
Redman31100
Messages postés167Date d'inscriptionmardi 11 septembre 2007StatutMembreDernière intervention11 février 2009 26 nov. 2008 à 13:42
Bah moi j'avais appris sur un livre de programmation VB.Net a utiliser Image.Clone dans une autre image donc ca copie sans utiliser le stream et ensuite Image.Dispose. Et là ça ne marche pas. Je vais essayer comme tu dis.
Par contre j'arrive pas avec g.DrawImageUnscaledAndClipped(Picture, New Drawing.Rectangle(X, Y, Width, Height)) ca ne sélectionne pas le rectangle de l'image que je veux importer dans la nouvelle image. Ca fait une image toute noire.