Delphi-PRAXiS
Seite 2 von 6     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi 18bit Bilder erstellen?? (https://www.delphipraxis.net/57079-18bit-bilder-erstellen.html)

Simon6785 16. Nov 2005 16:10

Re: 18bit Bilder erstellen??
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hm, also da steht wirklich was von 18bit bildern, aber irgendwie auch nicht wirklich...
Ja, ich weiß ganz sicher das ich 18bit bilder brauche...

Hier mal ein Bild aus der Firmware, das ist so ein 18bit bild, ich weiß nicht ob ihr damit was anfangen könnt?!? Also es ist 116160Bytes groß und 176x220px.

NicoDE 16. Nov 2005 17:34

Re: 18bit Bilder erstellen??
 
Zitat:

Zitat von Simon6785
Also es ist 116160Bytes groß und 176x220px.

Das wären genau 3 Byte pro Pixel (kein Header).
Test-Code könnte so aussehen:
Delphi-Quellcode:
function Bitmap18ToHandle(Source: Pointer; Width, Heigth: Integer): HBITMAP;
type
  PPixel18 = ^TPixel18;
  TPixel18 = record
    Data: array [0..2] of Byte; // Three bytes?
  end;
var
  DevContext: HDC;
  BitmapInfo: TBitmapInfo;
  BitmapBits: PRGBTriple;
  x, y: Integer;
  SourceBits: PPixel18;
begin
  Result := 0;
  DevContext := CreateCompatibleDC(0);
  if DevContext = 0 then
    Exit;
  try
    ZeroMemory(@BitmapInfo, SizeOf(TBitmapInfo));
    with BitmapInfo.bmiHeader do
    begin
      biSize := SizeOf(TBitmapInfoHeader);
      biWidth := Width;
      biHeight := -Heigth; // top-down
      biPlanes := 1;
      biBitCount := 24;
      biCompression := BI_RGB;
    end;
    Result := CreateDIBSection(0, BitmapInfo, DIB_RGB_COLORS,
      Pointer(BitmapBits), 0, 0);
    if Result = 0 then
      Exit;
    try
      SourceBits := Source;
      for y := 1 to Heigth do
      begin
        for x := 1 to Width do
        begin
          //FIXME: Pixel conversion...?
          // ______bb bbbbgggg ggrrrrrr
          // rrrrrrrr gggggggg bbbbbbbb
          BitmapBits.rgbtRed :=
            ((SourceBits.Data[0] and $3F)     );
          BitmapBits.rgbtGreen :=
            ((SourceBits.Data[0]       ) shr 6) or
            ((SourceBits.Data[1] and $0F) shl 2);
          BitmapBits.rgbtBlue :=
            ((SourceBits.Data[1]       ) shr 4) or
            ((SourceBits.Data[2] and $03) shl 4);
          Inc(BitmapBits);
          Inc(SourceBits);
        end;
        // Scanline alignment on DWORD boundaries
        BitmapBits := Pointer((Cardinal(BitmapBits) + 3) and Cardinal(not 3));
      end;
    except
      DeleteObject(Result);
      Result := 0;
    end;
  finally
    DeleteDC(DevContext);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Stream: TMemoryStream;
begin
  Stream := TMemoryStream.Create();
  try
    Stream.LoadFromFile('pwroff04.ani');
    Image1.Picture.Bitmap.Handle := Bitmap18ToHandle(Stream.Memory, 176, 220);
  finally
    Stream.Free();
  end;
end;

Simon6785 16. Nov 2005 17:59

Re: 18bit Bilder erstellen??
 
Hey, danke, wir kommen der Sache ja schon näher!!

Nur leider bekomme ich ein komplett schwarzes Bild wenn ich deinen code benutze!!

Der_Unwissende 16. Nov 2005 18:05

Re: 18bit Bilder erstellen??
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
wie soll denn dein Originalbild aussehen? Hab hier ein Samsung-bla, irgendwas mit Feuerwehr und das ganze mit einem gelben Hintergrund, aber mich würde das eigentliche original interessieren.

Gruß Der Unwissende

Der_Unwissende 16. Nov 2005 18:06

Re: 18bit Bilder erstellen??
 
Hast du eigentlich irgendwie die Beschreibung aus der du das mit den 18 Bit hast?

Simon6785 16. Nov 2005 18:34

Re: 18bit Bilder erstellen??
 
Liste der Anhänge anzeigen (Anzahl: 1)
das Bild was du angehängt hast ist bei mir auch schwarz?!?!!!

Ja, das ist genau richtig, ich hänge dir mal das bild was ich eben geschickt hab als 24bit bitmap an, aber das was du gesagt hast stimmt schonmal!

Ja, also das ist GANZ sicher 18bit, so ist das Bild in Resman, dem schon existierenden programm für samsung-firmwares beschrieben:

<img ofs="0x00d98e58" title="0x00d98e58" width="176" height="220" bpp="18">

und im programm steht auch immer wieder 18bit

Simon6785 16. Nov 2005 18:37

Re: 18bit Bilder erstellen??
 
wenn ich bei deinem bild den kontast ganbz hoch drehe bekomme ich ein spiegelverkehrtes, auf dem kopf stehendes bild wo der hintergrund türkis ist und alle anderen farben auch nicht stimmen?!?

ultrasombrero 16. Nov 2005 20:08

Re: 18bit Bilder erstellen??
 
Zitat:

Zitat von Simon6785
das Bild was du angehängt hast ist bei mir auch schwarz?!?!!!

Lol. Wie dunkel ist dein Bildschirm denn eingestellt???

Das erinnert mich an Anrufe bei der PC-Hotline, wo felsenfest behauptet wird, der PC sei kaputt, und wo sich dann irgendwann rausstellt, dass er nur nicht ans Stromnetz angeschlossen war...

Simon6785 16. Nov 2005 20:20

Re: 18bit Bilder erstellen??
 
hm, also bein bildschirm ist wirklich etwas dunkel, aber das bild ist pechschwarz bei mir... naja,un d halt das die farben falsch sind , es auf dem koüf steht und seitenverkehrt ist, aber sonst kommen wir der Sachen schon sehr sehr nahe!! ich brauch das bild jetzt nur noch richtig, wo ist denn der fehler?!?

Der_Unwissende 16. Nov 2005 20:42

Re: 18bit Bilder erstellen??
 
Ja, wo der Fehler ist, ist jetzt die Interessante Frage. Muss wohl nochmal genauer schauen, was man mit den 18 Bit anstellen muss, um es richtig hinzubekommen. Dass mit dem Spiegelverkehrt liegt eigentlich nur an der Logik, wie man die Bits anordnet. Selbes gilt grob für die Farben, kannst halt RGB, RBG, BRG, ... Anordnen. Aber selbst mit Farbtauschen komm ich nicht wirklich auf das erwartete Bild. Es gibt natürlich auch Bilder, die ihre Farben in RRRRRRRRRR....GGGGGGGGGG.....BBBBBBBB.... oder so anordnen. Und es gibt natürlich noch feste Farbpaletten, wobei du dann nur einen Index auf einen Eintrag hast. Und ohne die Tabelle der Farben kannst du dann nichts machen. Die sind in dem File definitiv nicht vorhanden.
Hab nicht mehr gemacht als einen Standard-Bitmap header an diese Daten anzufügen. Na ja, hab die Farbinfos auch noch einmal 2 Bit geschifftet (macht die Farben aber nur dunkler, logischer Weise, nicht richtiger).

Werde mal nochmal schauen, wenn ich Zeit hab,
Gruß Der Unwissende


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:56 Uhr.
Seite 2 von 6     12 34     Letzte »    

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