AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Effizientere Umsetzung gesucht: Datei mit Header und JPG
Thema durchsuchen
Ansicht
Themen-Optionen

Effizientere Umsetzung gesucht: Datei mit Header und JPG

Ein Thema von Dannyboy · begonnen am 10. Aug 2004 · letzter Beitrag vom 12. Aug 2004
Antwort Antwort
Dannyboy

Registriert seit: 4. Aug 2003
Ort: Delphi-Heaven
418 Beiträge
 
Delphi 7 Personal
 
#1

Effizientere Umsetzung gesucht: Datei mit Header und JPG

  Alt 10. Aug 2004, 15:45
Hallo SpriteFans,
meine folgende Klassenmethode soll den Record TCollectionInfo in
eine Datei schreiben und danach ein JPG an die Datei anhängen.
Das JPG wird zuvor aus einer TImage-Komponente geladen.
Die funktioniert alles wunderbar, allerdings leider nur über
einen Umweg:
Wie mein unten stehender Quelltext illustriert, habe ich dies
bisher nur über den Umweg einer temporären Datei hinbekommen.
Ich würde mich über einen Lösungsansatz ohne temporäre Datei
Sehr freuen. Habe das ganze auch über Streams versucht, aller –
dings bisher ohne Erfolg.
Besten Dank im Voraus
DANNYBOY

PS: Sorry, aber ich kommentiere immer in englisch.
„DecryptBuffer(buffer);“ bitte nicht beachten.
Delphi-Quellcode:
unit SpriteFiler;
interface
uses ExtCtrls, JPEG, Classes, SysUtils, Graphics;

//...
type TCollectionInfo = record
                         matrixCellWidth : word;
                         matrixCellHeight : word;
                         lastSpriteNum : integer;
                       end;

 TSpriteSaver = class
 public
   class function SaveSpriteCollection(Image : TImage;
                                       info : TCollectionInfo;
                                       Filename : String) : boolean;
      end;

implementation

const buffersize = 1024;
type TBuffer = array[1..buffersize-1] of byte;

class function TSpriteSaver.SaveSpriteCollection;
const tempfile = 'temp.dat';
var j : TJPEGImage;
     fIn, fOut : TFileStream;
     buffer : TBuffer;
     transmitted : integer;
begin
  result:= true;
  try
    j:= TJPEGImage.Create;
// copy image to jpg and save it to tempfile on hard disk
    j.Assign(image.Picture.Graphic);
    j.SaveToFile(tempfile);
// save decrypted TCollectionInfo to file
    move(info, Buffer, SizeOf(TCollectionInfo));
    fOut:= TFileStream.Create(filename, fmCreate OR fmShareExclusive);
    DecryptBuffer(buffer);
    fOut.Write(buffer, SizeOf(TCollectionInfo));
// load jpg, encrypt it and append it to outputfile
    fIn:= TFileStream.Create(tempfile, fmOpenRead OR fmShareExclusive);
    repeat
      transmitted:= fIn.Read(buffer, SizeOf(Buffer));
      DecryptBuffer(buffer);
      fOut.Write(buffer, transmitted);
    until transmitted = 0;
    fOut.Free;
    fIn.Free;
// delete temporary file
    deletefile(tempfile);
  except
    result:= false;
  end;
end;
end.
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

Re: Effizientere Umsetzung gesucht: Datei mit Header und JPG

  Alt 10. Aug 2004, 16:59
Schon mal versucht j.saveToStream
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Dannyboy

Registriert seit: 4. Aug 2003
Ort: Delphi-Heaven
418 Beiträge
 
Delphi 7 Personal
 
#3

Re: Effizientere Umsetzung gesucht: Datei mit Header und JPG

  Alt 12. Aug 2004, 13:47
Zitat von franktron:
Schon mal versucht j.saveToStream
Das Speichern des JPGS in einem Stream wäre nicht das Problem, wenn ich
wüsste, wie ich die Nicht-JPG-Daten dort anhänge, das JPG hinten dran und dann das
ganze Paket in eine Datei speichere.
  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 04:58 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