Keresés

Hirdetés

Új hozzászólás Aktív témák

  • vz12

    tag

    válasz Tomi_78 #2134 üzenetére

    Nos, nem nagyon értek hozzá, de nem gondolnám, hogy csupán property-k állítgatásával újraÉPÍTI (konvertálja) a kép tartalmát, ezért menthette az eredeti képet. A property-k a vizualitásra hatással lehetnek, de BELÜL a kép szerintem NEM változik.

    Ezen link alapján (ott "procedure TForm1.Button2Click(Sender: TObject);") írtam egy egyszerű működő példát Delphi-ben, még a képernyőn sem jelenítettem meg semmit (a gombon kívül), csak gombnyomásra legyártja egy kép kicsinyített mását a méretarány megtartásával.
    1280x905 helyett 100x71 pixel.
    672 Kb helyett 5 Kb.
    Ja, a példa JPG-vel dolgozik, tehát JPG-ből JPG-t csinál (a köztes állapot BMP).
    Ha fontos a PNG, azt Te nyomozd ki.

    procedure TForm1.Button1Click(Sender: TObject);
    var Source: TJPEGImage;  Dest,Temp: TBitmap;
    begin
      Source:=TJpegImage.Create;
      try
        Dest:=TBitmap.Create;
        try
          Temp:=TBitmap.Create;
          try
            Source.LoadFromFile('VALAMI.JPG');
            Source.DIBNeeded;
            Dest.Assign(Source);
            Temp.width:=100;
          Temp.height:=Round(Source.height*(Temp.width/Source.width));
            Temp.Canvas.StretchDraw(Rect(0,0,Temp.width,Temp.height), Dest);
            Source.Assign(Temp);
            Source.SaveToFile('PROBA.JPG');
          finally
            Temp.Free;
          end;
        finally
          Dest.Free;
        end;
      finally
        Source.Free;
      end;
    end;

    A "Temp.SetSize()" nálam nem működött, azért változtattam meg.
    Olyan sok képformátumot NEM kezel a Delphi/Lazarus, tehát egy "általános" képkonvertáló program írására a fenti egyszerű módszerrel nem lehet messzire jutni.
    Kép méretezésre jó lehet JPG, BMP esetén.

    [ Szerkesztve ]

Új hozzászólás Aktív témák