Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как уменьшить размер графического файла? 
:(
    Опции темы
Чайник Tefal
Дата 21.3.2004, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 21.3.2004

Репутация: нет
Всего: нет



Я делаю снимок экрана:

procedure TForm1.Button1Click(Sender: TObject);
var
DC: HDC;
Canva: TCanvas;
B: TBitmap;
begin
Canva := TCanvas.Create;
B := TBitmap.Create;
DC := GetDC(0);
try
Canva.Handle := DC;
with Screen do begin
B.Width := Width;
B.Height := Height;
B.Canvas.CopyRect(Rect(0, 0, Width, Height), Canva,
Rect(0, 0, Width, Height));
B.SaveToFile('c:\screen.bmp');
end
finally
ReleaseDC(0, DC);
B.Free;
Canva.Free
end
end;

Проблема в том, что файл c:\screen.bmp имеет размер 3 Mb. Что нужно добавить в код, чтобы уменьшить размер файла???

Заранее Спасибо!
PM MAIL   Вверх
<Spawn>
Дата 21.3.2004, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 2
Всего: 64



Используй jpeg. Для этого подклюи модуль JPEG и исользуй класс TJPEGImage, установив нужную компрессию. Примерно так:

Код
procedure TForm1.Button1Click(Sender: TObject);
var
 JPG: TJPEGImage;
 BMP: TBitmap;
begin
 try
   BMP := TBitmap.Create;
   JPG := TJPEGImage.Create;
   BMP.LoadFromFile('test.bmp');
   JPG.Assign(BMP);
   JPG.CompressionQuality := 50;
   JPG.SaveToFile('BmpToJpgResult.jpg');
 finally
   FreeAndNil(JPG);
   FreeAndNil(BMP);
 end;
end;

Добавлено @ 12:18
то есть для твоего случая можно сделать примерно следущее:

Код
procedure TForm1.Button1Click(Sender: TObject);
var
 JPG: TJPEGImage;
 BMP: TBitmap;
begin
 try
   BMP := TBitmap.Create;
   JPG := TJPEGImage.Create;
   BMP.Width := ClientWidth;
   BMP.Height := ClientHeight;
   BitBlt(BMP.Canvas.Handle, 0, 0, ClientWidth, ClientHeight, Canvas.Handle,
          0, 0, SRCCOPY);
   JPG.Assign(BMP);
   JPG.CompressionQuality := 50;
   JPG.SaveToFile('BmpToJpgResult.jpg');
 finally
   FreeAndNil(JPG);
   FreeAndNil(BMP);
 end;
end;


Это сообщение отредактировал(а) <Spawn> - 21.3.2004, 12:11


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Чайник Tefal
Дата 21.3.2004, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 21.3.2004

Репутация: нет
Всего: нет



ОГРОМНОЕ, человеческое спасибо!!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0642 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.