Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Prism Bitmap.Save mit ImageFormat in .net 1.1 (https://www.delphipraxis.net/98885-bitmap-save-mit-imageformat-net-1-1-a.html)

merlin17 3. Sep 2007 16:46


Bitmap.Save mit ImageFormat in .net 1.1
 
Hallo,

im .net-Framework kann ich problemlos ein Bitmap mit nachfolgendem Code als BMP oder JPEG etc. speichern...

bmp.Save('c:\dp.bmp',System.Drawing.Imaging.ImageF ormat.BMP);

Aber in .net 1.1 (jaaa. ich habe hier "nur" BDS2006 und auch auf der Zielmaschine .net 1.1 )
gibt es diese Möglichkeit leider nicht. Welche Alternative gibt es in 1.1 für dieses Problem ?


Danke für jeden Tipp!!



:-) thomas

Jürgen Thomas 3. Sep 2007 18:23

Re: Bitmap.Save mit ImageFormat in .net 1.1
 
Hallo,

ich habe in der NET1.1-Doku nachgeschaut und gefunden:
Zitat:

Image.Save-Methode (String, ImageFormat)
Speichert dieses Image-Objekt im angegebenen Format in der angegebenen Datei.
Bitmap ist von Image abgeleitet, und in der Liste der Bitmap-Member ist Save ebenfalls aufgeführt. Auch in meinem Buch zu Delphi 2005 (Doberenz/Gewinnus) gibt es ein Beispiel, das genau Deinem Code entspricht.

Vielleicht liegt Dein Problem nicht beim Speichern, sondern beim Erzeugen der Bitmap? Jürgen

merlin17 4. Sep 2007 09:19

Re: Bitmap.Save mit ImageFormat in .net 1.1
 
ich gebe zu, ich gehöre eher zur datenbank-fraktion und nicht zum GAS-Bereich (GrafikAnimationSound).

hier mein Codeschnipsel: (das ergebnis ist aber PNG und nciht BMP aber ich will BMP ...)

Danke schon im Voraus für jede Hilfe!!!

:-) thomas


Delphi-Quellcode:
procedure TWFConvert.Button1_Click(sender: System.object;
  e: System.EventArgs);
var
  t: TiffManager;
  i: Image;
  bmp: Bitmap;
  g: Graphics;
begin
  if ParamCount > 0 then
  begin
    try
      t := TiffManager.Create(TextBox1.Text);
      i := t.GetSpecificPage(0);
      bmp := Bitmap.Create(i.Width, i.Height);
      g := Graphics.FromImage(bmp);
      g.DrawImage(i, 0, 0, i.Width, i.Height);
      bmp.Save(TextBox2.Text); // >> wird aber nur PNG
//bmp.Save('bb',System.Drawing.Imaging.ImageFormat.BMP);
    finally
      t.Free;
      i.Free;
      g.Free;
      bmp.Free;
    end;
  end;
end;

Jürgen Thomas 4. Sep 2007 09:46

Re: Bitmap.Save mit ImageFormat in .net 1.1
 
Hallo Thomas,

wenn Du ohne Format-Angabe speicherst, dann wird es standardmäßig zu PNG. Das ist verständlich, weil dies ein "besseres" und neueres Format ist.

Aber was passiert denn genau, wenn Du es ausdrücklich als BMP speichern willst?
Delphi-Quellcode:
TextBox2.Text = 'c:\dp.bmp'; //  mit der richtigen Extension
bmp.Save(TextBox2.Text, System.Drawing.Imaging.ImageFormat.BMP);
Wird die Grafik überhaupt nicht gespeichert? Wird sie automatisch zu PNG? Darfst Du in das angegebene Verzeichnis schreiben? (Das kann man beim Entwickler voraussetzen, aber wer weiß...) Füge doch zusätzlich einen try-except-Block ein und lass Dir die Exception ausgeben (sofern vorhanden).

Jürgen

PS. Ich bin ebenfalls ein "Datenbänker", aber für FormPrint as a simple class (was es unter Delphi gab, aber nicht unter NET) habe ich mich etwas mit Grafik beschäftigt.

merlin17 4. Sep 2007 11:45

Re: Bitmap.Save mit ImageFormat in .net 1.1
 
Hallo Jürgen,

er akzeptiert nach Drawing das .Imaging.ImageFormat.BMP nicht... :roll:
Kannst Du einmal das von Dir erwähnte codeschnipselchen aus dem Doberanz-Buch einfügen ?


:-) thomas

Jürgen Thomas 4. Sep 2007 12:17

Re: Bitmap.Save mit ImageFormat in .net 1.1
 
Zitat:

Zitat von merlin17
Hallo Jürgen,

er akzeptiert nach Drawing das .Imaging.ImageFormat.BMP nicht... :roll:
Kannst Du einmal das von Dir erwähnte codeschnipselchen aus dem Doberanz-Buch einfügen ?

:cry: Das bringt doch nichts (ich hatte nicht genau genug hingesehen), weil auch dort als PNG gespeichert wird.

Aber ich muss/kann noch etwas genauer fragen:
  • Wird bereits bei der Eingabe gemeckert?
  • Wird das .Imaging moniert, das .ImageFormat oder erst das .BMP?
  • Kannst Du dies schreiben, aber bei Intellisense wird es nicht angeboten? Welche Stelle genau?
  • Oder meckert der Compiler? Welche Fehlermeldung genau?
  • Oder funktioniert es erst zur Laufzeit nicht?
  • Was und wie genau (siehe Vorschlag mit Exception)?
Die Referenz auf System.Drawing.Dll ist ja wohl zugewiesen...

Ich erinnere mich nicht genau, aber mir ist so, als ob unter Delphi.NET die Verwendung von Namespace und uses nicht klar genug geregelt ist. Du benötigst zwei Namespaces: System.Drawing und (zusätzlich, unabhängig davon) System.Drawing.Imaging. Die Namespaces hängen zwar miteinander zusammen und bauen sinnvoll aufeinander auf; es gibt aber keine unmittelbare Hierarchie: Wenn Du "uses System.Drawing" schreibst (oder wie die genaue Formulierung ist), steht "System.Drawing.Imaging" trotzdem noch nicht zur Verfügung!

Gruß Jürgen

merlin17 4. Sep 2007 12:35

Re: Bitmap.Save mit ImageFormat in .net 1.1
 
Jürgen,

es läuft :cheers:

Dein letzter Tip war goldrichtig:
uses "System.Drawing.Imaging" fehlte (es sind doch unterschiede zwischen ObjectPascal.net und C#....)



:-) thomas

Jürgen Thomas 5. Sep 2007 08:23

Re: Bitmap.Save mit ImageFormat in .net 1.1
 
Zitat:

Zitat von merlin17
es läuft :cheers:

Dein letzter Tip war goldrichtig:
uses "System.Drawing.Imaging" fehlte (es sind doch unterschiede zwischen ObjectPascal.net und C#....)

Das war mir sozusagen auf den letzten Drücker eingefallen: Borland hatte eine Reihe von Klimmzügen machen müssen, um die Anforderungen von NET (u.a. die Verwendung der Namespace-Struktur) mit der eigenen Sprache (u.a. der uses-Anweisung) kompatibel zu machen.

Freut mich, dass ich (auch als Delphi-Abtrünniger) helfen konnte! Jürgen

PS. Zurzeit gibt es in meiner Gegend Probleme mit DSL-Verbindungen; gestern kam ich ab 14 Uhr überhaupt nicht mehr ins Netz. Sonst hätte es diese Abschlussbemerkung schon viel früher gegeben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:35 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