Announcement

Collapse
No announcement yet.

wie kann ich die größe eines image1.pictures ändern

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

  • wie kann ich die größe eines image1.pictures ändern

    Hallo!
    Wenn ich ein Bild in ein image1.picture lade, dann will ich die bildgröße ändern und das verkleinerte bild wieder abspeichern...
    wenn ich image1.picture.height usw versuche dann geht das nicht, weil das ne read-only property ist...
    hat wer ne lösung? muss doch möglich sein...

    vielen dank im voraus

  • #2
    Hallo,
    eine Möglichkeit ist die Funktion TCanvas.StretchDraw.
    Du kannst das Bild in ein anderes TImage mit den gewünschten Massen
    kopieren.

    Ein kleines Beispiel:

    // TImage für Kopie erzeugen

    Image2:= TImage.Create(self);

    // Die max. Breite oder Höhe soll 150 pix sein
    // wenn breiter als hoch
    if Image1.Picture.Width >= Image1.Picture.Height then
    begin
    Image2.Width := 150;
    Image2.Height:= round(image1.Picture.Height / image1.Picture.Width * 150);
    end
    else
    // wenn höher als breit
    begin
    Image2.Height := 150;
    Image2.Width:= round(image1.Picture.Width / image1.Picture.Height * 150);
    end;

    Image2.Canvas.StretchDraw(image2.Canvas.ClipRect, Image1.Picture.Graphic);
    image2.Picture.SaveToFile(filepath + '\prev\' + filename + '.bmp');
    Image2.Free;

    mfg
    Markus Tischle

    Comment


    • #3
      Bitmap erstellen

      windows funktion: StretchBlt ausführen

      Bitmap zurückschreiben mit z.B.: Image1.Picture.Bitmap.Canvas.Draw(0,0,MeineNeuesBi tmap) oder bitblt ausführen.

      Das spart den ganzen Überbau eines zweiten TImage und ist deshalb dramatisch schneller.

      Möglicherweise wäre ohnehin der Einsatz einer paintbox besser, insbesondere dann, wenn viele Grafikoperationen durchgeführt werden sollen. Mit TImage sollte man sparsam umgehen, denn jedes Bild hat noch eine Speicherkopie. Aus Geschwindigkeitsgründen lohnt der Einsatz einer Paintbox immer, auch wenn's drei Zeilen mehr Coding bedeutet

      Bernhar

      Comment

      Working...
      X