AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi JPEG mit Kompression "auf die harte Tour"
Thema durchsuchen
Ansicht
Themen-Optionen

JPEG mit Kompression "auf die harte Tour"

Ein Thema von hirnstroem · begonnen am 9. Feb 2007 · letzter Beitrag vom 9. Feb 2007
Antwort Antwort
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#1

JPEG mit Kompression "auf die harte Tour"

  Alt 9. Feb 2007, 07:49
'loha Folks,

ich wollte mich erkundigen, wie man irgendwelche Daten zu einem JPEG Bild zusammenfügen kann. Ich bekomme bisher von einem Gerät Bitmaps, welche Pixel für Pixel dargestellt werden, das Ziel ist aber, auf dem Gerät welches das Bild aufnimmt, die Daten bereits in ein komprimiertes JPEG zu wandeln um weniger Daten übertragen zu müssen.

Die folgenden Informationen (Header) bekomme ich vom Gerät:

Code:
  // return header
AnswerData[0]=TRANSFER_DATA+1; // 1: Running number for order of packages
AnswerData[1]=0x03;            // 2: image is sent over CAN
AnswerData[2]=0b00000001;      // 3: Image is not compressed and has 50% x 50% resolution
AnswerData[3]=0x00;            // 4: compression parameters
AnswerData[4]=0x00;            // 5: Image width: 176 = 0xB0
AnswerData[5]=4;               // 6: Image width: 176 = 0xB0
AnswerData[6]=0x00;            // 7: Image height: 144 = 0x90
AddCheckSumToAnswerData(AnswerData);
ECANSendMessage(Identifier,AnswerData,8,ECAN_TX_XTD_FRAME);

AnswerData[0]=TRANSFER_DATA+2; // 7: Running number for order of packages
AnswerData[1]=8;                 // 8: Image height: 144 = 0x90
AnswerData[2]=0x00;            // 9: number of pixels
AnswerData[3]=0x00;            // 10:number of pixels
AnswerData[4]=0x00;            // 11:number of pixels
AnswerData[5]=32;              // 12:number of pixels: totaL 0x6300 = 25344    (35=0x23)
AnswerData[6]=ErrorCode;       // 14: error code
ECANSendMessage(Identifier,AnswerData,8,ECAN_TX_XTD_FRAME);
AddCheckSumToAnswerData(AnswerData);
Beim Bitmap sieht die Sache genau gleich aus, nur dass dort klar ist, dass jedes ankommende Byte ein Pixel dargestellt hat. Wie ich nun ein bereits komprimiertes JPEG Bild darstelle ist mir unklar. Klar ist, dass ich pro ankommendem Paket jeweils 8 Byte an daten erhalte.

Da ich etwas unter Zeitdruck stehe, kann ich nicht allzuviel Zeit investieren um herauszufinden wie man macht was ich will.

Grüsse
hirnstroem
inde deus abest
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: JPEG mit Kompression "auf die harte Tour"

  Alt 9. Feb 2007, 08:38
Guten Morgen,

wenn ich das richtig verstanden habe, brauchst Du doch nur ein BMP Format in ein jpg Format wandeln.
Das würde in etwas so gehen.

{
Usage:
Delphi-Quellcode:
BMPtoJPG('mybitmap.bmp','myjpeg.jpg')
}

function BMPtoJPG(var BMPpic, JPGpic: string):boolean;
var Bitmap: TBitmap;
    JpegImg: TJpegImage;
begin
  Result:=False;
  Bitmap := TBitmap.Create;
  try
   Bitmap.LoadFromFile(BMPpic) ;
   JpegImg := TJpegImage.Create;
   try
    JpegImg.Assign(Bitmap) ;
    JpegImg.SaveToFile(JPGpic) ;
    Result:=True;
   finally
    JpegImg.Free
   end;
  finally
   Bitmap.Free
  end;
end;
Der Code ist von hier: http://delphi.about.com/cs/adptips20...ltip0301_3.htm

Hoffe liege nicht so ganz daneben.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#3

Re: JPEG mit Kompression "auf die harte Tour"

  Alt 9. Feb 2007, 08:53
Hallo Klaus,

nein leider nicht. Die Daten, welche Empfangen werden, stellen Bruchstücke eines JPEG Bildes dar. Das Gerät kann also Bitmaps versenden und auch komprimierte JPEGs. Die Bitmapgeschichte habe ich im Griff, aber wie ich Bilddaten, welche zu einem JPEG gehören zu einem JPEG Bild zusammenfüge ist mir ein Rätsel.

Ich habe also bereits alle Daten empfangen, das ist noch unproblematisch. Nun sind diese Daten (jeweils 8 Byte grosse Pakete) in einem Buffer verfügbar. Die Pakete werden dann noch "sortiert", sprich die Bilddaten aus den einzelnen Paketen werden der Reihe nach zusammengefügt.

Ich habe nun also Bilddaten eines komprimierten JPEGs vor mir sowie den Header bereits ausgewertet. Nun möchte ich das JPEG zusammensetzen und davon habe ich keine Ahnung.
inde deus abest
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: JPEG mit Kompression "auf die harte Tour"

  Alt 9. Feb 2007, 09:16
Da habe ich dann noch eine Verständnisfrage:

Auf dem Gerät welches die Bilddaten überträgt liegt das Bild als jpg vor.
Es wird nun Stückchen für Stückchen (jeweils 8 Byte) übertragen.

Warum ist es dann nicht möglich diese Stückchen wieder zusammenzusetzten?
Das ist doch nicht mehr als eine binäre Übertragung, also würde
ich annehmen ,daß in diesen Daten auch der jpg header (also das gesamte jpg Image)
übertragen wird.

Infos zum jpg Format findest Du hier.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#5

Re: JPEG mit Kompression "auf die harte Tour"

  Alt 9. Feb 2007, 14:18
Ich verstehe auch noch nicht ganz. Werde jetzt zuerst schauen, dass das Gerät mir das Bild als JPEG liefert (funktioniert noch nicht wirklich) und mich danach wieder zu Worte melden (aber nicht mehr heute -.-). Wahrscheinlich werde ich die Daten wirklich einfach aneinanderreihen müssen und als JPEG abspeichern und das Bild wird dargestellt.

Grüsse
hirnstroem
inde deus abest
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:13 Uhr.
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