Laden...

FileStream erweitern für Image

Erstellt von tgrisu vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.057 Views
T
tgrisu Themenstarter:in
5 Beiträge seit 2010
vor 14 Jahren
FileStream erweitern für Image

Hallo zusammen,

ich habe einen Filestream, aus dem ich ein Bitmap generieren möchte. Das File enthält die Daten als TIFF, LZW-Codiert - jedoch ohne Header. Die Header-Informationen stehen in einer extra Textdatei.
Mein Ansatz: Ein MemoryStream mit den Headerinfos erstellen und beide Streams zusammenführen. Aber wie ?
Der komplette FileStream kann nicht eingelesen werden, da zu groß. Es wird in der Regel auch nur ein Teil des Bildes Angezeigt.

Wer hat eine Idee für mich ?

Das Leben ist eines der härtesten 👶

Gelöschter Account
vor 14 Jahren

du schiebst den header in eine datei und fängst an, die datei mit den bildinformationen anzuhängen. das kannst du auch häppchenweise machen.

203 Beiträge seit 2006
vor 14 Jahren

kenn das format nicht, aber wie wäre es mit sowas


class Streams : Stream
{
    private List<Stream> m_streams = new List<Stream>();
    private Stream m_current;

    public void AddStream(Stream s) { m_streams.Add(s); }    
}

jetzt implementierst du das interface so, dass solange vom m_current liesst, bis dieser weg "leer" ist und dann auf den nächsten springst.

T
tgrisu Themenstarter:in
5 Beiträge seit 2010
vor 14 Jahren

danke für Eure Antworten, aber so leiche funktioniert das leider nicht.

Das Objekt Bitmap hält sich den Stream solange offen, wie das Objekt selber existiert. Der Zugriff im Filestream erfolgt wahlfrei, jenachdem, welcher BildTeil benötigt wird.
Das File mit den Bildinfos ist sehr groß und die benötigten Bildteile müssen an einer bestimmten stelle in Stream stehen. Wegen der Größe kann ich nicht einfach mal eben das ganze File hin- und her kopieren (war mein erster Ansatz).

Das Grundproblem: Das File mit den Bilddaten entspricht zwar einem TIFF, jedoch fehlt wie gesagt der Header.

Das Leben ist eines der härtesten 👶

203 Beiträge seit 2006
vor 14 Jahren

okay. dann musst du eben auch die Position property überlagern und ja nach dem den m_current setzen. anhand des der filelength weißt du ja, wann du den m_current ändern musst.

Gelöschter Account
vor 14 Jahren

ich würde dir empfehlen eine klasse zu erstellen, die von Image erbt und alle dafür notwendigen methoden implementiert.

so kannst du alle notwendigen funktionalitäten nach außen hin gut wrappen, das alle controls mit diesem speziellen handling auskommen.

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo tgrisu,

also mir gefällt das mit der Streams-Klasse super (ich würde sie zwar MultiStream nennen, aber das ist Geschmackssache). Und wie esskar sagst, musst du nur alle Methoden und Properties richtig überschreiben, damit der wahlfreie Zugriff funktioniert.

Wenn du so eine Klasse schreibst, würde ich mich freuen, wenn du sie in .NET-Komponenten und C#-Snippets veröffentlichst.

herbivore