Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Конвертация BMP в JPG... [D7, WinXP]


Max.66RUS ©   (2006-07-25 23:20:00) 

Дайте пожалуйста кто-нибудь исходник простейшей процедуры конвертации .BMP файла в .JPG файл. Заранее спасибо.


Handle   (2006-07-26 13:24:00) [1]


> Sapersky   (26.07.06 12:48) [9]


Вы правы я немного погорячился и приношу свои извенения.


Handle   (2006-07-26 13:18:00) [2]


> Плохиш ©   (26.07.06 13:14) [12]


Вы правы я немного погорячился и приношу свои извенения.


Плохиш   (2006-07-26 13:14:00) [3]


> Handle   (26.07.06 13:10) [11]
>
> > Sapersky   (26.07.06 12:48) [9]
> > begin/end забыл. Без него по условию будет выполняться
> только
> > строчка BmpImage:= TBitmap.Create;
>
>
> Интересно почему у меня выполняется, я знаю наверно у меня
> Delphi круче

Попробуйте нажать в опен-диалоге кнопку отменить.


Handle   (2006-07-26 13:10:00) [4]


> Sapersky   (26.07.06 12:48) [9]
> begin/end забыл. Без него по условию будет выполняться только
> строчка BmpImage:= TBitmap.Create;


Интересно почему у меня выполняется, я знаю наверно у меня Delphi круче.


>  BadTester   (26.07.06 12:49) [10]


Вы забыли написать про применение фильтров и изменение контрастности.

Ma
> x.66RUS ©   (26.07.06 11:09) [4]
> Как в эту процедуру добавить параметр отвечающий за качество
> получаемого изображения? Мне нужно чтобы .JPG файл получался
> самого худшего качества...


BadTester   (2006-07-26 12:49:00) [5]

uses  Jpeg;

 public
   { Public declarations }
   JPEG         :   TJPEGImage;
   Bitmap       :   TBitmap;
   JPEGWidth    :   Integer;
   JPEGHeight   :   Integer;
 end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if SaveDialog1.Execute then
begin
     if Form1.RadioButton1.Checked then
     begin
        JPEG   := TJPEGImage.Create;
        Bitmap := TBitmap.Create;
        try
           JPEG.Assign(Image1.Picture.Bitmap);
           Image1.Picture.Assign(JPEG);

        finally
           JPEG.Free;
           Bitmap.Free;
        end;
           Image1.Picture.SaveToFile(SaveDialog1.FileName + '.jpeg')
     end
     else
     begin
           Image1.Picture.SaveToFile(SaveDialog1.FileName + '.bmp');
     end;
 
     Close;
  end;
end;


Sapersky   (2006-07-26 12:48:00) [6]

begin/end забыл. Без него по условию будет выполняться только строчка BmpImage:= TBitmap.Create;
И в условии не обязательно сравнивать с True/False, можно короче:
if OpenDialog1.Execute then ...


Handle   (2006-07-26 12:33:00) [7]


> мдя...

А поподробней если можно


antonn   (2006-07-26 12:25:00) [8]


> if OpenDialog1.Execute = true then

мдя...


Handle   (2006-07-26 12:09:00) [9]

TJPEGQualityRange = 1..100


Handle   (2006-07-26 12:07:00) [10]


> @!!ex ©   (26.07.06 09:53) [3]


Вы правы незачем

procedure TForm1.Button1Click(Sender: TObject);
var
 JpegIm:   TJpegImage;
 BmpImage: TBitMap;
begin
 if OpenDialog1.Execute = true then
 BmpImage:= TBitmap.Create;
 BmpImage.LoadFromFile(OpenDialog1.FileName);
 JpegIm := TJPEGImage.Create;
 JpegIm.Assign(BmpImage);
 JpegIm.CompressionQuality := 10;
 { например у меня при значении 10 размер фотки = 32KB при значении 90 размер = 250 KB
 всё конечно зависит от первоночального размера изображения}
 JpegIm.Compress;
 JpegIm.SaveToFile(OpenDialog1.FileName + '.jpg');
 BmpImage.Destroy;
 JpegIm.Destroy;
end;


Max.66RUS   (2006-07-26 11:09:00) [11]

Большое спасибо. Всё работает. А можно ещё вопрос: Как в эту процедуру добавить параметр отвечающий за качество получаемого изображения? Мне нужно чтобы .JPG файл получался самого худшего качества...


@!!ex   (2006-07-26 09:53:00) [12]

А зачем Image?
Не проще ли и дешевле грузить в TBitMap?


Handle   (2006-07-26 09:51:00) [13]

То есть вот так я хотел сказать

uses
 Jpeg;

var
jpgImg: TJPEGImage;
begin
if OpenDialog1.Execute = true then
Image1.Picture.Bitmap.LoadFromFile(OpenDialog1.FileName);
jpgImg := TJPEGImage.Create;
jpgImg.Assign(Image1.Picture.Bitmap);
jpgImg.SaveToFile(OpenDialog1.FileName + '.jpg');


Handle   (2006-07-26 09:48:00) [14]

uses
  Jpeg;

var
 jpgImg: TJPEGImage;
begin
 if OpenDialog1.Execute = true then
 Image1.Picture.Bitmap.LoadFromFile(OpenDialog1.FileName);
 jpgImg := TJPEGImage.Create;
 jpgImg.SaveToFile(OpenDialog1.FileName + '.jpg');


Наверх

Титульная страница Поиск, карта сайта Написать письмо