In einer mobilen App werden ein oder mehrere Bilder (nur JPEG/JPG) - entweder mit eingebauter Kamera oder ausgewählt aus Fotobibliothek - vor dem Hochladen auf einen Web-Service angezeigt.Firemonkey: Das Laden eines JPEGs in einen beliebigen Bildsteuerungstyp und das Speichern in einer Datei oder einem Stream macht es kleiner. Kann dies vermieden werden?
Aber Laden eines Bildes in eine FMX TImage/TImageControl/TImageViewer
und Speichern in Stream (oder Datei) macht es kleiner, etwa 45%.
Eine Idee, warum das passiert und gibt es eine Möglichkeit, die Größenreduktion zu vermeiden?
Was dies gefragt ist der einfache Test-Code, nichts Besonderes daran:
procedure TImageTest.btnTestClick(Sender: TObject);
var
aFile : string;
begin
if not OpenDialog.Execute then
Exit;
// get jpg file name for loading
aFile := OpenDialog.Filename;
// load into TImage, TImageControl or TImageViewer
ImageViewer.Bitmap.LoadFromFile(aFile);
// and save to file for comparison
ImageViewer.Bitmap.SaveToFile(aFile+'_2.jpg');
end;
Wo habe ich nach Debugging-Hilfe gefragt? Oder fragen Sie, warum der Code nicht funktioniert? Es handelt sich um eine Frage zum Verhalten von Firefemonkey-Bildkomponenten, die mit der einfachsten Test-App einfach reproduziert werden können. –
Jpeg ist kein verlustfreies Format. Jedes Laden und Speichern führt zu einem Qualitätsverlust. Warum ist ein solcher Qualitätsverlust schwer zu sagen ohne Ihren genauen Code? Wenn Sie ein Bild zum Web-Service hochladen müssen, laden Sie den ursprünglichen Dateistream anstelle der Zwischendarstellung von den FMX-Steuerelementen hoch. –
Welche Delphi-Version verwenden Sie? –