Announcement

Collapse
No announcement yet.

DPI runden? Header falsch in NET.Bitmap

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DPI runden? Header falsch in NET.Bitmap

    BDS 2006

    Hi, ich erzeuge ein Bitmap (z.B. mit Paint), das Bild hat immer 96 DPI glatt.
    Wenn ich das jetzt mit .NET öffne und speichere, dann hat das Bild seit neusten 96,0119 DPI.
    Weiß einer, ob die falsche DPI einen Einfluss auf das Bild hat?
    Wenn ich es über die Bildansicht von XP wieder speichere, werden es auch 96,0119 DPI (NEU) angezeigt.
    Ist das ein Problem oder NORMAL?
    XP zeigt über Eigenschaften immer 96 DPI an, über "img.HorizontalResolution.ToString" wird 96,0119 DPI angezeigt.
    Paint selber gibt immer glatt 96 DPI an, auch über "img.HorizontalResolution.ToString"

    Muss ich die DPI jetzt einfach runden?

    Danke im voraus!

    Wenn das Bild mit "F_myRawFormat" oder über "64bpp" wieder gespeichert wird, ändert sich der Header von
    BMP auf PNG nicht wirklich neu (hab das in einem anderen Post schon mal beschreiben).
    Früher konnte man das Bitmap einfach so speichern, auch in 32BIT und 96 DPI.
    Als Konverter gehts aber auch nicht schlecht

    P.S. Habe es nur unter Delphi.NET getestet, aber mal anzunehmen, dass C++ und C# auch davon betroffen sind...

    private
    { Private-Deklarationen }
    F_bmp : Bitmap;
    F_myRawFormat : ImageFormat;

    procedure TForm1.Button1Click(Sender: TObject);
    var
    bmp : Bitmap;
    begin
    if OpenPictureDialog1.Execute then
    begin
    bmp := Bitmap.Create(OpenPictureDialog1.FileName);
    Image1.Picture.Bitmap.Assign(bmp);

    //F_bmp := Bitmap.Create(8, 8, PixelFormat.Format64bppArgb);
    //F_bmp := bmp;
    F_bmp := Bitmap.Create(bmp, bmp.Width, bmp.Height);
    //F_bmp.RotateFlip(RotateFlipType.Rotate90FlipNone);
    F_myRawFormat := F_bmp.RawFormat;
    end;
    end;

    procedure TForm1.Button2Click(Sender: TObject);
    var
    bmp : Bitmap;
    sPfad : string;
    begin
    if SavePictureDialog1.Execute then
    begin
    sPfad := SavePictureDialog1.FileName;
    //bmp := Bitmap.Create(SavePictureDialog1.FileName);
    F_bmp.Save(sPfad, ImageFormat.Bmp);
    //F_bmp.Save(sPfad, F_myRawFormat);
    end;
    end;

    procedure TForm1.FormDestroy(Sender: TObject);
    begin
    F_bmp.Dispose;
    end;
    end.
Working...
X