Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : BMP -> Icônes 32 bits [ Mutimédia / Image & Vidéo ] (sisi231)

mardi 5 juin 2007 à 15:57:44 | BMP -> Icônes 32 bits

sisi231

Membre Club
Bonjour, je sais convertir un fichier BMP en ICO mais mon code ne conserve pas les vraies couleurs, quelqu'un sait-il comment faire ?

[b]SISI231[/b]

mardi 5 juin 2007 à 19:10:41 | Re : BMP -> Icônes 32 bits

Ali_usto

Comment tu as fait pour convertir l'image??
essai avec paint   , ouvre ton image bmp avec paint et puis fait enregistrer sous ensuite change le format de l'enregistrement (*.ico) et le tour est joué

mardi 5 juin 2007 à 19:39:36 | Re : BMP -> Icônes 32 bits

sisi231

Membre Club


Pour convertir mon bitmap j'ai utilisé la fonction suivante :

function BitmapToIcon(Bitmap: TBitmap): TIcon;
var

  IconInfo: TIconInfo;
  IconBitmap, MaskBitmap: TBitmap;
  x, y: Integer;
  TransparentColor: TColor;
begin

  IconBitmap:= TBitmap.Create;
  IconBitmap.Width:= bitmap.width;
  IconBitmap.Height:= bitmap.height;
  IconBitmap.Canvas.StretchDraw(Rect(0, 0, IconBitmap.Width,
   IconBitmap.Height), Bitmap);
  IconBitmap.TransparentColor:= Bitmap.TransparentColor;
  TransparentColor:= IconBitmap.TransparentColor and $FFFFFF;
  MaskBitmap:= TBitmap.Create;
  MaskBitmap.Assign(IconBitmap);
  for y:= 0 to IconBitmap.Height - 1 do
    for x:= 0 to IconBitmap.Width - 1 do
      if IconBitmap.Canvas.Pixels[x, y] = TransparentColor then
        IconBitmap.Canvas.Pixels[x, y]:= clBlack;
  IconInfo.fIcon:= True;
  IconInfo.hbmMask:= MaskBitmap.MaskHandle;
  IconInfo.hbmColor:= IconBitmap.Handle;
  Result:= TIcon.Create;
  Result.Handle:= CreateIconIndirect(IconInfo);
  MaskBitmap.Free;
  IconBitmap.Free;
end;

Je sais le faire avec Paint mais je veux pouvoir le faire en Delphi pour pouvoir l'utiliser avec Delphi.
[b]SISI231[/b]


mardi 5 juin 2007 à 21:51:56 | Re : BMP -> Icônes 32 bits

japee

Membre Club Administrateur CodeS-SourceS
Salut,

J'ai testé : ce code  restitue correctement les couleurs.

Mais il est bizarrement arrangé. En particulier, le TIcon créé (Result) n'est jamais libéré.
A mon avis, il vaudrait mieux le reconstruire sous forme de procedure :

procedure BitmapToIcon(const BmpFileName, IcoFileName: string);

N'aurais-tu pas plutôt un problème avec le pixel qui détermine la couleur transparente (c'est celui qui est situé en bas à gauche de l'image) ?

A +

mardi 5 juin 2007 à 22:13:48 | Re : BMP -> Icônes 32 bits

japee

Membre Club Administrateur CodeS-SourceS
Où l'as-tu trouvé, ce code ?

J'ai bien envie de le refaire (en l'état il n'est pas très propre, avec un TBitmap inutile, etc...) et de le mettre à disposition de tous sous forme de snippet.

mardi 5 juin 2007 à 22:22:01 | Re : BMP -> Icônes 32 bits

japee

Membre Club Administrateur CodeS-SourceS
Ouais, en fait ce code traîne un peu partout sur le net (merci Google).
Ça simplifie pour le copyleft. Je me méfie, depuis quelques temps...^^

Voici ma procedure :

procedure BitmapToIcon(const BmpFileName, IcoFileName: string);
var
  IconBitmap, MaskBitmap: TBitmap;
  TransparentColor: TColor;
  x, y: Integer;
  IconInfo: TIconInfo;
begin
  IconBitmap := TBitmap.Create;
  try
    IconBitmap.LoadFromFile(BmpFileName);
    TransparentColor := IconBitmap.TransparentColor and $FFFFFF;
    MaskBitmap := TBitmap.Create;
    try
      MaskBitmap.Assign(IconBitmap);
      for y := 0 to IconBitmap.Height - 1 do
        for x := 0 to IconBitmap.Width - 1 do
          if IconBitmap.Canvas.Pixels[x, y] = TransparentColor then
            IconBitmap.Canvas.Pixels[x, y] := clBlack;
      with IconInfo do
      begin
        fIcon := True;
        hbmMask := MaskBitmap.MaskHandle;
        hbmColor := IconBitmap.Handle;
      end;
      with TIcon.Create do
      try
        Handle := CreateIconIndirect(IconInfo);
        SaveToFile(IcoFileName);
      finally
        Free;
      end;
    finally
      MaskBitmap.Free;
    end;
  finally
    IconBitmap.Free;
  end;
end;

// exemple d'utilisation :

procedure TForm1.Button1Click(Sender: TObject);
begin
  BitmapToIcon('image.bmp', 'image.ico');
end;


J'ai épuré et protégé dans des blocs try...finally.
Ça fonctionne parfaitement.

A +

mercredi 6 juin 2007 à 12:16:01 | Re : BMP -> Icônes 32 bits

sisi231

Membre Club
Je persiste à dire que je n'obtiens pas la même résolution.
J'ai uploadé un source pour que tu puisse voire :
[ Lien ]

Lis le readme.txt inclus STP.

Merci.

Cordialement.

[b]SISI231[/b]

mercredi 6 juin 2007 à 12:18:21 | Re : BMP -> Icônes 32 bits

sisi231

Membre Club
Tu dis que ce code t'intéresse et que tu voudrais le mettre sous forme de snippet, j'ai aussi un code pour passer de bmp à tiff et vice-versa : ça t'intéresse ?

[b]SISI231[/b]



Cette discussion est classé dans : bmp, bits, icônes


Répondre à ce message

Sujets en rapport avec ce message

Convertir un Bmp en icone [ par sebastienbro ] Comment convertir un BMP en Icone ?J'ai essayé, mais je n'y arrive pas !merci Icônes in DLL [ par Bruto ] Juste une petite question :Est-il possible de sauvegarder des icônes dans une formes comme on sauvegarde un ensemble d'images dans un TImageList.L'app Pixel d'une image ( bmp ) [ par Bruto ] Voilà, je voudrais récupérer chaque pixel d'une image bmp et vérifier la couleur. Les sources sur le site ( en parcourant les titres ) non pas l'air d Convertion d'un Jpeg en Bitmap puis stockage dans un tableau [ par dami ] Bonjour a tous. Pour les besoins d'OpenGL, j'ai besoin de transformer mon Jpeg en BMP puis de stocker le BMP sous forme de tableau. J'ai récupéré et a Convertion d'un Jpeg en Bitmap puis stockage dans un tableau [ par dami ] Bonjour a tous. Pour les besoins d'OpenGL, j'ai besoin de transformer mon Jpeg en BMP puis de stocker le BMP sous forme de tableau. J'ai récupéré et a Bitmap, tableau de stockage .... [ par dami ] Bonjour a tous. Pour les besoins d'OpenGL, j'ai besoin de transformer mon Jpeg en BMP puis de stocker le BMP sous forme de tableau. J'ai récupéré et a Couleurs 24 Bits [ par MAsterC ] J'ai une question ....Est-ce que Delphi prend en charge dans les bouton les image (bmp) 24bits couleurs... parce que moi l'image dans mon bouton me se Transformer un gif en bmp [ par chookoo ] J'ai besoin d'ouvrir une image gif et ensuite la transformer en format bmp.1. Est-ce que quelqu'un sait comment ouvrir l'image gif (doit-il y avoir un Icônes !!! (delphi3) [ par alexis2015 ] Bonjour, j'aimerai pouvoir affichier l'icone d'un executable (*.exe) dans un TImage (ou autre si néss.)Merci bcp d'avance !!! accéder aux propriétés pixels d'une image [ par costello ] bon voila le problème:j'ai fait un logiciel sympa, qui applique un effet sur des images, tout ça en faisant des petits algorythmes simples sur des ima


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,234 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.