Autor Beitrag
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Mi 10.11.04 00:10 
Hallo,

hab mal wieder ein Problem. Ich möchte JPEGs in Bitmaps umwandeln, die mit der Intel Jpeg Library (Version 1.5.4.36) komprimiert wurden.
Nun möchte ich dafür die Library (ijl15.dll) benutzen. Leider hat Intel die Entwicklung an dieser Bibliothek eingestellt und gibt auch keinen Quelltext mehr raus.
Hat jemand von euch schonmal mit dieser Bibliothek gearbeitet und kann mir kurz erklären, welche Methoden ich benutzen kann? Kennt jemand eine Adresse, wo ich mehr Informationen dazu finde?

Oder zur Not: Kennt jemand eine kostenlose Möglichkeit diese JPEGs in Bitmaps zu konvertieren z.B. mit Komponenten?

Gruß Hape!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
MAlsleben
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 302

W2k,WinXP
D3 - DXE3 Enterprise
BeitragVerfasst: Mi 10.11.04 09:29 
Hi

zum Umwandeln von jpeg in bmp gab es schon einige Beiträge hier im Forum.

z.B. hier: www.delphi-forum.de/viewtopic.php?t=32274

Oder einfach mal die Suche bemühen.

Gruß Micha

_________________
Viele Wege führen nach Rom.
wulfskin Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Mi 10.11.04 17:08 
MAlsleben hat folgendes geschrieben:
Hi (...) zum Umwandeln von jpeg in bmp gab es schon einige Beiträge hier im Forum.
Hallo MAlsleben,

danke, aber ich weiss selber wie man JPEGs in das BMP Format umwandelt :roll:. Das Problem ist, dass Delphi nicht das Jpeg Format von Intel unterstützt, eine Konvertierung also gar nicht möglich ist. Deshalb benötigt man entweder Zugriff auf diese DLL oder es gibt sicherlich auch extra Komponenten, die das können.
Aber eigentlich will ich schon auf die DLL zugreifen. Vielleicht weiss ja jemand noch Rat!

Gruß Hape!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
wulfskin Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Do 11.11.04 22:28 
Sodele,

nach ewig langer Suche, habe ich ein halbwegs funktionierendes Beispiel gefunden. Zusammen mit einer alten Hilfedatei des Formates hab ich mir dann diesen gut funktionierenden Quelltext zusammengebastelt:
ausblenden volle Höhe Delphi-Quelltext
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:
{Addapted from JPEG_IO.pas:
Copyright © David J Taylor, Edinburgh
Web site:  www.satsignal.net
E-mail:    davidtaylor@writeme.com}

function DecodeJPGFileToBMP(const AStream: TMemoryStream;
  var ABitmap: TBitmap): Boolean;
var
  Width, Height, nChannels, dibPadBytes: DWord;
  jcprops : TJPEG_CORE_PROPERTIES;
  DIB: TDIBSection;
  Res: Integer;
begin
  Result := False;
  if ijlInit(@jcprops) = IJL_OK then begin
    jcprops.JPGFile := nil;
    jcprops.JPGBytes := AStream.Memory;
    jcprops.JPGSizeBytes := AStream.Size;
    Res := ijlRead(@jcprops, IJL_JBUFF_READPARAMS);
    if Res = IJL_OK then begin
      Width := jcprops.JPGWidth;
      Height := jcprops.JPGHeight;
      nChannels := jcprops.JPGChannels;
      dibPadBytes := ((((Width * nChannels) + 3div 4) * 4) -
        (Width * nChannels);
      FillChar (DIB, SizeOf(DIB), 0);
      if GetObject(ABitmap.Handle, SizeOf(DIB), @DIB) <> 0 then begin
      //***************
        DIB.dsBmih.biSize := SizeOf(TBitmapInfoHeader);
        DIB.dsBmih.biWidth := Width;
        DIB.dsBmih.biHeight := Height;
        DIB.dsBmih.biPlanes := 1;
        DIB.dsBmih.biBitCount := 24;
        DIB.dsBmih.biCompression := BI_RGB;
        DIB.dsBmih.biSizeImage := 0;
        DIB.dsBmih.biXPelsPerMeter := 0;
        DIB.dsBmih.biYPelsPerMeter := 0;
        DIB.dsBmih.biClrUsed := 0;
        DIB.dsBmih.biClrImportant := 0;
        jcprops.DIBWidth := Width;
        jcprops.DIBHeight := -Height;
        jcprops.DIBChannels := 3;
        jcprops.DIBColor := IJL_BGR;
        jcprops.DIBPadBytes := dibPadBytes;
        jcprops.DIBBytes := PByte (DIB.dsBm.bmBits);
        case jcprops.JPGChannels of
          1:
            jcprops.JPGColor := IJL_G;
          3:
            jcprops.JPGColor := IJL_YCBCR;
          else begin
            jcprops.DIBColor := TIJL_COLOR(IJL_OTHER);
            jcprops.JPGColor := TIJL_COLOR(IJL_OTHER);
          end;
        end;
        Res := ijlRead(@jcprops, IJL_JBUFF_READWHOLEIMAGE);
        if Res = IJL_OK then begin
          ABitmap.Modified := True;
          Result := True;
        end
        else
          MessageDlg(ijlErrorStr(Res), mtError, [mbOk], 0);
      end;
    end
    else
      MessageDlg(ijlErrorStr(Res), mtError, [mbOk], 0);
  end;
  ijlFree(@jcprops);
end;
Könnte ja jemanden interessieren,

gruß Hape!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.