Всем привет нужно помощь. Имеется фотографии более размерным весом более 1мб. Мне нужно ее подгрузить в Image1 и пере сохранить уже в сжатом по весу, разрешение и холст не трогаем, только исключительно вес, по условию состояние точнее не более 200 кб.
Вообщем нашел то что хотел это самое идеальное что мог найти.
Код:
procedure TForm1.Button1Click(Sender: TObject);
const FileName = 'e:\Безымянный.jpg';
FileNameOut = 'e:\БезымянныйOut.jpg';
var JpegIn: TJpegImage;
Bitmap: TBitmap;
MS: TMemoryStream;
function GetFileSize(PFileName: String): Int64;
var FS: TFileStream;
begin
FS:=TFileStream.Create(PFileName,fmOpenRead);
Result:=FS.Size;
FS.Free;
end;
begin
{загрузили jpg из файла}
Label1.Caption:=Format('Размер исходного файла - %d',[GetFileSize(FileName)]);
JpegIn:=TJpegImage.Create;
JpegIn.LoadFromFile(FileName);
{сконвертировали в bmp}
Bitmap:=TBitmap.Create;
Bitmap.Assign(JpegIn);
{компрессия}
JpegIn.Assign(Bitmap);
Bitmap.Free;
JpegIn.CompressionQuality:=50;
JpegIn.Compress;
{посмотрели размер в стреам}
MS:=TMemoryStream.Create;
JpegIn.SaveToStream(MS);
Label3.Caption:=Format('Размер в стреам - %d',[MS.Size]);
MS.Free;
{записали в файл}
JpegIn.SaveToFile(FileNameOut);
Label2.Caption:=Format('Размер выходного файла - %d',[GetFileSize(FileNameOut)]);
JpegIn.Free;
Но мне теперь надо как то через цикл сделать что бы проверяла размер то что напишу в Edit. Здесь все считай готово на 95% остается еще маленький шаг сделать и на этом всё.