AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi warum sind .bmp sooo viel größer als Jpeg?
Thema durchsuchen
Ansicht
Themen-Optionen

warum sind .bmp sooo viel größer als Jpeg?

Ein Thema von Spiderpig_GER_15 · begonnen am 15. Apr 2008 · letzter Beitrag vom 20. Apr 2008
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#11

Re: warum sind .bmp sooo viel größer als Jpeg?

  Alt 15. Apr 2008, 19:07
Echt ? Wird das komplette Bitmap kopiert? Hab mich als ich das zusammengeschrieben habe auch kurz gefragt obs en Speicherleck gibt, aber da dachte ich:

Ich weise den Pointer auf das Bitmap ja dem Image.Picture.Bitmap zu und das wird ja freigegeben wenn das Image freigegeben wird.

Falsch gedacht?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#12

Re: warum sind .bmp sooo viel größer als Jpeg?

  Alt 15. Apr 2008, 19:12
Delphi-Quellcode:
TPicture = class(....)
[...]
  property Bitmap: TBitmap read GetBitmap write SetBitmap;
[...]

procedure TPicture.SetBitmap(Value: TBitmap);
begin
  SetGraphic(Value);
end;

procedure TPicture.SetGraphic(Value: TGraphic);
var
  NewGraphic: TGraphic;
begin
  NewGraphic := nil;
  if Value <> nil then
  begin
    NewGraphic := TGraphicClass(Value.ClassType).Create;
    NewGraphic.Assign(Value); //<=== Tada, es wird kopiert :-)
[...]
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#13

Re: warum sind .bmp sooo viel größer als Jpeg?

  Alt 15. Apr 2008, 19:25
Zitat von Muetze1:
Zitat von NamenLozer:
Du kannst übrigens ohne Probleme eine Datei als JPEG in ein Bitmap laden, darauf herumzeichnen und anschließend wieder als .jpg speichern.
Was aber intern wieder zum Auspacken führt und dann zum erneuten komprimieren.
Hab ich was anderes behauptet? Intern dürfte die Grafik wahrscheinlich eh als Bitmap vorliegen. (Bzw Canvas, das aber vom Speicherverbrauch her identisch sein sollte).

Zitat von Muetze1:
Zitat von NamenLozer:
Was willst du jetzt für ne Antwort hören? Weil JPEG im Gegensatz zu BMP komprimiert.
Bitmap komprimiert auch: RLE, aber die ist bei weitem nicht so effizient, aber dafür lossless.
Die RLE-Komprimierung kann man aber echt vergessen. Dann schon lieber GIF, oder noch besser: PNG.
  Mit Zitat antworten Zitat
DMW

Registriert seit: 6. Sep 2006
Ort: Münster
269 Beiträge
 
Delphi XE Professional
 
#14

Re: warum sind .bmp sooo viel größer als Jpeg?

  Alt 15. Apr 2008, 19:42
Zitat von Muetze1:
Bitmap komprimiert auch: RLE, aber die ist bei weitem nicht so effizient, aber dafür lossless.
Das ist nur bei Bitmaps mit 4 oder 8 bpp möglich.
Eine ordentliche verlustfreie Kompression für Bitmaps bietet das PNG-Format. Für Photos eignet sich das allerdings nicht.
Moritz
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#15

Re: warum sind .bmp sooo viel größer als Jpeg?

  Alt 16. Apr 2008, 12:31
Zitat von Spiderpig_GER_15:
wie kann ich etwas in ein Tbitmap laden?
Delphi-Quellcode:
uses ..., JPEG, ...
var
  jpg: TJPEG;
  bmp: TBitmap;
begin
  jpg := TJPEG.Create;
  bmp := TBitmap.Create;
  try
    jpg.LoadFromFile ('C:\irgendeine.jpg');
    bmp.Assign (jpg); // <<- JPG dem BMP zuweisen
    bmp.SaveToFile ('C:\irgendeine.bmp');
  finally
    FreeAndNil (bmp);
    FreeAndNil (jpg);
  end;
end;
Funktioniert andersrum auch. Also bmp.LoadFromFile, Jpg.Assign, Jpg.SaveToFile ...
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#16

Re: warum sind .bmp sooo viel größer als Jpeg?

  Alt 16. Apr 2008, 15:41
@Spiderpig_GER_15
Wenn du ein Bild "Rund" da stellen möchtest solltest du die Eigenschaft Tranzparent von TImage auf true stellen und bei
TranparentColor eine Farbe zuweisen.
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von Spiderpig_GER_15
Spiderpig_GER_15

Registriert seit: 17. Mär 2008
298 Beiträge
 
Delphi 7 Personal
 
#17

Re: warum sind .bmp sooo viel größer als Jpeg?

  Alt 17. Apr 2008, 13:14
@mimi, aber davon wird mein Bild auch nicht 'runder' oder? Wo ist eignetlich der unterschied wenn ich das Bild auf transperent stelle?

@Nuclear Ping vieeelen dank, genau das war meine Frage thx

Thx

Spiderpig
---Zufall ist das Inkognito Gottes---
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#18

Re: warum sind .bmp sooo viel größer als Jpeg?

  Alt 17. Apr 2008, 13:18
Zitat von Spiderpig_GER_15:
@mimi, aber davon wird mein Bild auch nicht 'runder' oder? Wo ist eignetlich der unterschied wenn ich das Bild auf transperent stelle?
du must natürlich dein bild an den stellen mit der Transparent-Farbe übermalen, wo es transparent werden soll also eine Elipse und alles was zwischen der und dem Rand des Bitmaps ist...

Gruß Frank
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#19

Re: warum sind .bmp sooo viel größer als Jpeg?

  Alt 17. Apr 2008, 14:24
Naja, es stimmt schon, rund wird das Viereck dadurch nicht, aber es sieht so aus der Anwender wird davon nix mitbekommen.

Alles was der Transparent Farbe entspricht wird mit dem Hintergrund Übermalt.
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#20

Re: warum sind .bmp sooo viel größer als Jpeg?

  Alt 17. Apr 2008, 15:07
ich hab da mal was zusammengeschrieben...einfach ein TImage aufs form, ein bitmap reinladen und folgende Methode mit einbauen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var bmp_mask,bmp_tmp:TBitmap;
const cl_trans_tmp=clWhite;
      cl_trans=clFuchsia;
begin
  bmp_mask:=TBitmap.create;
  bmp_tmp:=TBitmap.create;
  //load bitmap
  bmp_tmp.Assign(image1.picture.bitmap);
  //resize mask
  bmp_mask.width:=bmp_tmp.width;
  bmp_mask.height:=bmp_tmp.height;
  //create the mask;
  bmp_mask.canvas.brush.color:=cl_trans;
  bmp_mask.canvas.Pen.color:=cl_trans;
  bmp_mask.Canvas.FillRect(rect(0,0,bmp_mask.width,bmp_mask.height));
  bmp_mask.canvas.brush.color:=cl_trans_tmp;
  bmp_mask.canvas.Pen.color:=cl_trans_tmp;
  bmp_mask.canvas.ellipse(0,0,bmp_mask.width,bmp_mask.height);
  bmp_mask.TransparentColor:=cl_trans_tmp;
  bmp_mask.Transparent:=true;
  //merging the mask with original bitmap
  bmp_tmp.Canvas.Draw(0,0,bmp_mask);
  bmp_tmp.TransparentColor:=cl_trans;
  bmp_tmp.Transparent:=true;
  //Draw masked bitmap
  canvas.draw(0,0,bmp_tmp);
  //free Objects
  bmp_tmp.free;
  bmp_mask.free;
end;
Gruß Frank
Miniaturansicht angehängter Grafiken
unbenannt_524.gif  
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 00:40 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