Bonjour à tous,

Encore un mystère de l'informatique ... à moins que.

J'ai une fonction qui prends un image et lui appose un filigrane dessus (pour protéger une image avec un logo). Mon code fonctionne à merveille sur tous les postes XP mais il y a un problème de détourage sur les postes en Win7 (32 ou 64 bits).
Voyez par vous même => http://img36.imageshack.us/img36/376/g4u4.jpg

J'utilise bien entendu la même appli avec les mêmes images, tout est identique.

Je ne comprends pas.

Voici mon code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
Dim vSignature As Image
        Dim vLargeur, vHauteur, vLargeurSignature, vHauteurSignature, vCpt, vPosX, vPosY As Integer
        Dim vGraph As Graphics
        Dim vImage, vImageThumb As Bitmap
        Dim vTransparence As Single = 0.5
        Dim vMatrix As Single()() = { _
                        New Single() {1, 0, 0, 0, 0}, _
                        New Single() {0, 1, 0, 0, 0}, _
                        New Single() {0, 0, 1, 0, 0}, _
                        New Single() {0, 0, 0, vTransparence, 0}, _
                        New Single() {0, 0, 0, 0, 1}}
        Dim vColorMatrix As New ColorMatrix(vMatrix)
        Dim vImageAtt As New ImageAttributes
 
        Const cHauteurMax As Integer = 2000
        Const cLargeurMax As Integer = 2000
 
        vImageAtt.SetColorMatrix( _
                       vColorMatrix, _
                       ColorMatrixFlag.Default, _
                       ColorAdjustType.Bitmap)
 
        vImage = New Bitmap(Application.StartupPath & "\Original.jpg")
 
        vLargeur = vImage.Width
        vHauteur = vImage.Height
 
        If vHauteur > cHauteurMax Then
            vLargeur = CInt((cHauteurMax * vLargeur) / vHauteur)
            vHauteur = cHauteurMax
        End If
 
        If vLargeur > cLargeurMax Then
            vHauteur = CInt((cLargeurMax * vHauteur) / vLargeur)
            vLargeur = cLargeurMax
        End If
 
        '1.1.8 : REDIMENSIONNEMENT DE L'IMAGE
        vImageThumb = CType(vImage.GetThumbnailImage(vLargeur, vHauteur, Nothing, Nothing), Bitmap)
 
        '1.1.9 : CREATION D'UN ENCODEUR POUR GERER LA QUALITE
        Dim vParamEncodeur As New Imaging.EncoderParameter(Imaging.Encoder.Quality, 90)
        Dim vEncodeur As New Imaging.EncoderParameters
        vEncodeur.Param(0) = vParamEncodeur
 
        '1.1.10 : CREATION DU CODEC POUR GERER LA FORMAT DE L'IMAGE
        Dim vCodec As Imaging.ImageCodecInfo() = Imaging.ImageCodecInfo.GetImageEncoders()
        For vCpt = 0 To vCodec.Length - 1
            If vCodec(vCpt).MimeType = "image/jpeg" Then
                Exit For
            End If
        Next
 
        'Image temporaire
        vGraph = Graphics.FromImage(vImageThumb)
 
        'Qualité de l'image
        vGraph.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
 
        'Image Signature
        vSignature = Image.FromFile(Application.StartupPath & "\Fond.gif")
        vLargeurSignature = vSignature.Width
        vHauteurSignature = vSignature.Height
 
        'REDIMENSIONNEMENT DE LA SIGNATURE
        If vHauteurSignature > vHauteur Then
            vLargeurSignature = CInt((vHauteur * vLargeurSignature) / vHauteurSignature)
            vHauteurSignature = vHauteur
        End If
 
        If vLargeurSignature > vLargeur Then
            vHauteurSignature = CInt((vLargeur * vHauteurSignature) / vLargeurSignature)
            vLargeurSignature = vLargeur
        End If
 
        'POSITIONNEMENT AU MILIEU
        vPosX = CInt((vLargeur - vLargeurSignature) / 2)
        vPosY = CInt((vHauteur - vHauteurSignature) / 2)
 
        'DESSINE LE LOGO SUR L'IMAGE
        vGraph.DrawImage( _
            vSignature, _
            New Rectangle(vPosX, vPosY, vLargeurSignature, vHauteurSignature), _
            0, _
            0, _
            vSignature.Width, _
            vSignature.Height, _
            GraphicsUnit.Pixel, _
            vImageAtt)
 
        '1.1.11 : SAUVEGARDE L'IMAGE REDIMENSIONNER
        vImageThumb.Save(Application.StartupPath & "\Resultat.jpg", vCodec(vCpt), vEncodeur)
 
        '1.1.12 : DESTRUCTION DE L'IMAGE
        vImageThumb.Dispose()
J'ai creusé dans tout les sens mais rien n'y fait.
Si quelqu'un avait la solution se serait merveilleux.

Merci d'avance