IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Image Bmp en JPeg


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 22
    Par défaut Image Bmp en JPeg
    Bonjour tout le monde,

    Je me retourne vers vous encore une fois

    Après de très nombreuses recherches sur google et autre, je n'ai point trouvé ce que je cherchais.

    Je me retourne donc vers vous, car je sais que vous êtes très fort la dedans plus que moi en tout cas.

    Ma toute première idée était de créé un programme, qui lui marchait, mais n'était pas trop top je l'avoue, j'utilisais les sendkeys pour ouvrir un programme externe pour qu'il fasse ce que l'on attendais de lui.

    Son but ouvrir une dll par un programme tiers (pe explorer), et remplacer une image et sauvegarder.

    Pour plus de simplicité, j'ai voulu faire plus simple, j'ai donc fait en sorte de ne plus passer par ce programme externe

    Le nouveau programme : la personne choisit son image et fait appliquer
    Le programme rentre lui-même dans la dll et modifie.

    Je me suis lancé dans la création de code puis en surfant pour le reste ou je calais, je me suis inspiré d'un bout de code libre de droit.

    Je peux vous donner le lien si il faut

    Mais le hic que voici se passe dans le module

    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
    96
    Option Explicit
     
    'entête d'un fichier BITMAP
    Private Type BITMAPFILEHEADER   ' 14 Bytes
         bfType As Integer
         bfSize As Long
         bfReserved1 As Integer
         bfReserved2 As Integer
         bfOffBits As Long
    End Type
     
    'un fichier BITMAP
    Private Type Bitmap
        Header As BITMAPFILEHEADER
        Data() As Byte
    End Type
     
    'obtient un  handle de modification de ressource
    Private Declare Function BeginUpdateResource Lib "kernel32.dll" _
                    Alias "BeginUpdateResourceA" (ByVal pFileName As String, _
                    ByVal bDeleteExistingResources As Long) As Long
    'met à jour des infos de ressource
    Private Declare Function UpdateResource Lib "kernel32.dll" _
                    Alias "UpdateResourceA" _
                    (ByVal hUpdate As Long, ByVal lpType As Long, _
                    ByVal lpName As Long, ByVal wLanguage As Long, _
                    lpData As Any, ByVal cbData As Long) As Long
    'enregistre des infos de ressource dans le fichier
    Private Declare Function EndUpdateResource Lib "kernel32.dll" _
                    Alias "EndUpdateResourceA" _
                    (ByVal hUpdate As Long, ByVal fDiscard As Long) As Long
    'copie une zone mémoire dans une autre
    Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" _
                    (Destination As Any, Source As Any, ByVal length As Long)
     
    'ressource bitmap
    'type Resource Bitmap
    Private Const RT_BITMAP As Long = 2&
     
    'extrait les données d'un fichier Bitmap pour le transformer en ressource
    '========================================================================
    'FileName : nom du fichier Bitmap
    'renvoie une structure bitmap (entête + données)
    Private Function MakeBitmapExe(FileName As String) As Bitmap
    Dim FileNum As Integer
     
    FileNum = FreeFile
    Open FileName For Binary As #FileNum
        Get #FileNum, , MakeBitmapExe.Header
        ReDim MakeBitmapExe.Data(MakeBitmapExe.Header.bfSize - 14)
        Get #FileNum, , MakeBitmapExe.Data
    Close #FileNum
    End Function
     
    'remplace une bitmap du fichier
    '===============================
    'FileName : nom du fichier executable
    'BitmapFile : nom du fichier icone
    'BaseID : ID de la bitmap
    'LangID : ID de la langue de la bitmap
    Public Function ReplaceBitmapInExe _
                    (FileName As String, BitmapFile As String, _
                    BaseID As Long, LangID As Long) As Boolean
    Dim hWrite As Long 'handle de modification
    Dim ret As Long 'valeur de retour
    Dim Exe As Bitmap 'contenu du fichier bitmap
    Dim X As Long 'compteur
     
    'obtient un handle de modification
    hWrite = BeginUpdateResource(FileName, 0)
     
    'si échec, on quitte
    If hWrite = 0 Then ReplaceBitmapInExe = False: Exit Function
     
    'sinon, on lit l'icone
    Exe = MakeBitmapExe(BitmapFile)
     
    'on met à jour la ressource bitmap
    ret = UpdateResource(hWrite, RT_BITMAP, BaseID, LangID, _
                    ByVal VarPtr(Exe.Data(0)), UBound(Exe.Data))
     
    'si échec, on quitte
    If ret = 0 Then 
        ReplaceBitmapInExe = False
        EndUpdateResource hWrite, 1
        Exit Function
    End If
     
    'on enregsitre dans le fichier executable
    ret = EndUpdateResource(hWrite, 0)
    'si échec, on quitte
    If ret = 0 Then ReplaceBitmapInExe = False: Exit Function
     
    'sinon succès
    ReplaceBitmapInExe = True
    End Function
    En effet, cette fonction ne fonctionne que pour les images BMP et j'aurais voulu savoir si on pouvait modifier par exemple pour les images Jpeg ou png par exemple

  2. #2
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    Quel rapport entre PE Explorer et la conversion des formats d'images ?

    Fais une recherche sur la librairie d'intel avec ijl11.dll comme mot-clé

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 22
    Par défaut
    dans la dll il y'a des dossiers, dossiers bitmap et jpeg si je met bitmap ca remplace le dossier bitmap et ect pour les jpeg

    Je vais regarder pour ijl11.dll

Discussions similaires

  1. [GD] Réduction d'une image BMP et sauvegarde au format JPEG
    Par guillaumeIOB dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 17/05/2010, 09h47
  2. Réponses: 6
    Dernier message: 21/11/2008, 16h42
  3. [Images] [php5] convertir un bmp en jpeg
    Par matN59 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 24/04/2006, 15h11
  4. Comment convertir une image bmp en jpeg ?
    Par zidenne dans le forum Langage
    Réponses: 3
    Dernier message: 08/01/2006, 12h37
  5. Création image BMP
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 17h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo