Wyświetlanie JPG na Image

0

Nie wiem czemu mój post (BMP->JPG) został usunięty (może któryś z moderatorów popatrzył tylko na temat i od razu ciach). Rozwiązania nie moge znaleźć w FAQ, a podpowiedź Ziombera była mało konkretna. Tak więc pisze o problemie jeszce raz:

var 
  JPG : TJPEGImage; 
begin 
  try 
    JPG := TJPEGImage.Create; 
    JPG.CompressionQuality := SpinEdit1.Value; 
    JPG.Assign(Image1.Picture.Bitmap); 
    JPG.Compress; 
    Image2.Picture.Assign(JPG); 
  finally 
    JPG.Free; 
  end; 
end;

W Image1 mam załadowaną bitmapę. W Image2 po wykonaniu powyższego kodu pojawia się niezależnie od wartości SpinEdit1
nieskompresowany obrazek z Image1. Czemu nie widać kompresji, co jest źle [???] .

(zapisywanie do pliku JPG i wczytywanie go do Image2 działa
ale ja chcę to zrobić bez tworzenia nowych plików).

0

Już chyba wiem, dlaczego to nie działa.
Compress przeznaczone jest do zmniejszania objętości plików, a jak ty dajesz Assign do TImage to tam ci wyskakuje Bitmapa, bo TJPEGImage zawiera Bitmapę i procedury do jej kodowania.
Może użyj tego:

var 
  JPG, JPG2 : TJPEGImage;
begin
    JPG2 := TJPEGImage.Create;
    JPG := TJPEGImage.Create;
  try
    JPG.CompressionQuality := SpinEdit1.Value;
    JPG.Assign(Image1.Picture.Bitmap);
    JPG.Compress;
    JPG.SaveToFile('plik');
    JPG2.LoadFromFile('plik');
    Image2.Picture.Assign(JPG2);
    DeleteFile('plik');
  finally 
    JPG.Free;
    JPG2.Free;
  end; 
0

Dzieki (chociaż mówiłęm że nie chce zapisywania do pliku). Ale jakoś mi sie nie chce wierzyć żeby się tego nie dało zrobić inaczej. [???]

1 użytkowników online, w tym zalogowanych: 0, gości: 1