Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi 16x16-Bitmap in 32x16-Glyph umwandeln (https://www.delphipraxis.net/101519-16x16-bitmap-32x16-glyph-umwandeln.html)

scrat1979 14. Okt 2007 22:13


16x16-Bitmap in 32x16-Glyph umwandeln
 
Hallo zusammen,

ich bin gerade auf der Suche nach einem Tool, welches ein 16x16 Bitmap in ein 32x16 Bitmap umwandelt. Die zweite Hälfte soll eine Grauwerte-Kopie der ersten sein.

Hintergrund: Ich möchte nicht für jedes Icon bei den BitBtn's (Enabled/Disabled-Status) mit Photoshop dies manuell machen müssen.

Daher die Frage: Gibt es so ein PRogramm überhaupt oder eine schnellere Lösung???

SCRaT

Dax 14. Okt 2007 22:18

Re: 16x16-Bitmap in 32x16-Glyph umwandeln
 
Ich wüsste auf die schnelle keines.. :gruebel: Aber das müsste sich doch im Handumdrehen selbst machen lassen?

scrat1979 14. Okt 2007 22:23

Re: 16x16-Bitmap in 32x16-Glyph umwandeln
 
Zitat:

Zitat von Dax
Ich wüsste auf die schnelle keines.. :gruebel: Aber das müsste sich doch im Handumdrehen selbst machen lassen?

Das schon. Ich wolle nur mal meine komplette Icons-Kollektion (mehrere 1000 freie Icons) mit einem "Mausklick" umwandeln. Vielleicht kennt ja doch einer eine Möglichkeit. Ggf. müsste ich mir so ein PRogramm eben selbst schreiben :pale:

SCRaT

Progman 14. Okt 2007 22:25

Re: 16x16-Bitmap in 32x16-Glyph umwandeln
 
ich würde auch selbst schreiben vorschlagen. So auf Anhieb fällt mir keine Anwendung ein, die das macht.

alzaimar 14. Okt 2007 22:26

Re: 16x16-Bitmap in 32x16-Glyph umwandeln
 
Eine ziemlich einfache Möglichkeitm, ein Bitmap in Graustufen zu überführen, besteht daren, die RGB-Werte eines Pixels durch jeweils (R+G+B)/3 zu ersetzen. Es gibt zwar andere, angeblich der menschlichen Wahrnehmung eher entsprechende Möglicheiten, aber die sind mit meinen vielleicht farbenblinden Augen ziemlich daneben.

Also:
1. Erstelle Dir eine 32x16 Bitmap
2. Kopiere das Glyph in die linke Hälfte
3. Erstelle die Rechte Hälfte mit o.g. Verfahren

P.S.: Programmieren lernt man in erster Linie durch Programmieren und nicht durch Bitten um 'fertige Tools'-
P.P.S.: Googel mal wieder

@Dax: Dein Wort in Gottes Ohr

@scrat1979: Jo, es ist so banal, das DU es als Übung durchaus selbst programmieren könntest. Und eines noch: Da es soooo einfach ist, eine farbige Bitmap in Graustufen zu überführen, kann man das doch gleich zur Laufzeit erledigen, ooooder?

scrat1979 14. Okt 2007 22:34

Re: 16x16-Bitmap in 32x16-Glyph umwandeln
 
Zitat:

Zitat von alzaimar
P.S.: Programmieren lernt man in erster Linie durch Programmieren und nicht durch Bitten um 'fertige Tools'-
P.P.S.: Googel mal wieder

@Dax: Dein Wort in Gottes Ohr

@scrat1979: Jo, es ist so banal, das DU es als Übung durchaus selbst programmieren könntest. Und eines noch: Da es soooo einfach ist, eine farbige Bitmap in Graustufen zu überführen, kann man das doch gleich zur Laufzeit erledigen, ooooder?

Da hast Du mich falsch verstanden. Dieses PRogramm zu schreiben wäre auch für mich überhaupt kein Problem. Aber warum selbst schreiben, wenn es dies schon gibt?!? Ich programmiere mir ja nicht mal so einen MP3-Player sondern verwende Winamp o.ä. ...

Also mir ging es wirklich nicht um "Programmieren zu Üben" - falls es so rübergekommen sein sollte :gruebel: :gruebel:

SCRaT

SirThornberry 15. Okt 2007 00:21

Re: 16x16-Bitmap in 32x16-Glyph umwandeln
 
ich würde mir das ganze selbst programmieren. Grund: Wenn ich es selbst programmiere ist es schneller fertig als wenn ich darauf warte das hier jemand ein FreewareTool postet welches das kann.

scrat1979 15. Okt 2007 00:29

Re: 16x16-Bitmap in 32x16-Glyph umwandeln
 
Ok, ihr habt mich überredet :-)

Werde in den nächsten Tagen mal so ein Ding schreiben und es danach in die Freeware-Sektion verfrachten...

Danke trotzdem an alle Antworter

SCRaT

alzaimar 15. Okt 2007 07:28

Re: 16x16-Bitmap in 32x16-Glyph umwandeln
 
Als Anregung.
Delphi-Quellcode:
Function ColorToGrayScale (aColor : TColor) : TColor;
Var
  m : Integer;

Begin
  m := (GetRValue (aColor) + GetGValue(aColor) + GetBValue(aColor)) Div 3;
  Result := RGB (m, m, m);
End;

Procedure CreateGlpyhSet (aBitmap : TBitmap; aResultGlyph : TBitmap);
Var
  i, j : Integer;

Begin
  aResultGlyph.Width := 2*aBitmap.Width;
  aResultGlyph.Height := aBitmap.Height;
  aResultGlyph.Canvas.Draw(0,0, aBitmap);
  For i:=0 to aBitmap.Height-1 do
    For j := 0 to aBitmap.Width-1 do
      aResultGlyph[i,j+aBitmap.Width] := ColorToGrayscale (aBitmap[i,j])
End;

scrat1979 15. Okt 2007 16:11

Re: 16x16-Bitmap in 32x16-Glyph umwandeln
 
@alzaimar: Vielen Dank. Muß jetzt nur noch schauen, wann ich dazukomme. Hoffe, das PRogramm können noch einige mehr brauchen :-)

Grüße :cheers:

SCRaT

OregonGhost 17. Okt 2007 10:46

Re: 16x16-Bitmap in 32x16-Glyph umwandeln
 
Bin gerade eben auf den GlyFX Image Welder gestoßen. Vielleicht tut's der auch (oder kann dir als Anregung dienen).

oki 17. Okt 2007 11:10

Re: 16x16-Bitmap in 32x16-Glyph umwandeln
 
@OregonGhost: Damit kann man leider nur mehrere Bitmaps in eins zusammenführen. zumindest hab ich keine Möglichkeit gesehen aus einem Bitmap ein neues mit Disable-anteil zu machen. Hab es gerade ausprobiert.

Ich erstelle meine bitmaps (32x16) auch immer per Hand.

gruß oki

OregonGhost 17. Okt 2007 11:21

Re: 16x16-Bitmap in 32x16-Glyph umwandeln
 
Das Erstellen der einzelnen Bitmaps per Batch kann man zum Beispiel mit IrfanView machen, auch mit entsprechenden Effekten. Dann kann man sie mit dem Image Welder zusammenführen :)

Edit: Vor langer Zeit habe ich das mal für ein Delphiprogramm programmiert - Beim Laden der Grafiken wurde eine Kopie mit einem sanften Schlagschatten erzeugt, mit zwei verschiedenen Abständen (quasi einmal als Normal und einmal als Highlighted), und dann noch als Graustufenbild für Disabled. Das Erzeugen der Alternativbilder für, ka, vielleicht 15 Bilder lag in der Größenordnung 10µs. War etwas überrascht damals. Insofern kann man das sowieso gut in der Anwendung selbst machen, was den Vorteil hat, dass man die Icons nicht extra dafür vorbereiten muss. Das nur mal nebenbei.

scrat1979 17. Okt 2007 16:36

Re: 16x16-Bitmap in 32x16-Glyph umwandeln
 
Zitat:

Zitat von OregonGhost
Das Erstellen der einzelnen Bitmaps per Batch kann man zum Beispiel mit IrfanView machen, auch mit entsprechenden Effekten. Dann kann man sie mit dem Image Welder zusammenführen :)

Edit: Vor langer Zeit habe ich das mal für ein Delphiprogramm programmiert - Beim Laden der Grafiken wurde eine Kopie mit einem sanften Schlagschatten erzeugt, mit zwei verschiedenen Abständen (quasi einmal als Normal und einmal als Highlighted), und dann noch als Graustufenbild für Disabled. Das Erzeugen der Alternativbilder für, ka, vielleicht 15 Bilder lag in der Größenordnung 10µs. War etwas überrascht damals. Insofern kann man das sowieso gut in der Anwendung selbst machen, was den Vorteil hat, dass man die Icons nicht extra dafür vorbereiten muss. Das nur mal nebenbei.

Die Idee das "on-the-fly" im Programm zu machen, finde ich jetzt ehrlich gesagt gar nicht so doof. Darauf bin ich nicht gekommen... :-)

Trotzdem werden ich mir dieses Programm mal schreiben. Dürfte ja ziemlich leicht sein, dann werde ich ja sehen, ob es nützlich ist :evil: . Ich denke andererseits 10-20 Glyphs in eine Anwendung einzubinden dürfte die Dateigröße ja nicht unbedingt ins unermässliche steigen lassen. Dennoch - wie gesagt - Dein Vorschlag hat auch was für sich :cheers:

SCRaT


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz