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.
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.