Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
-79 / 1 / 0
Регистрация: 26.11.2016
Сообщений: 146
1

Как сжать скриншот?

17.04.2017, 16:28. Показов 920. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. У меня есть код, который делает скриншоты:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var
ScreenTC : TCanvas;
ScreenBM : TBitMap;
begin
ScreenTC := TCanvas.Create;
ScreenBM := TBitMap.Create;
ScreenTC.Handle := GetDC(Hwnd_Desktop);
ScreenBM.Width := Screen.Width;
ScreenBM.Height := Screen.Height;
ScreenBM.Canvas.CopyRect(ScreenBM.Canvas.ClipRect, ScreenTC, ScreenTC.ClipRect);
ScreenBM.SaveToFile(TargetFile);
ScreenBM.Free;
ScreenTC.Free; 
end;
но есть одна проблема - скриншоты получаются слишком тяжелыми, до нескольких мегабайт размером. Как бы мне их ужать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.04.2017, 16:28
Ответы с готовыми решениями:

как сжать картинку
Надо вывести фон на LCD. Какие есть варианты?

Как сжать том.
У меня два диска С и Д. С уже заполнен,помогите сжать мне его.Думаю из-за этого плохо пашет комп.

Как сжать массив?
Как сжать массив переприсваеванием ?

Как сжать *.avi
Здравствуйте, уважаемые форумчане. Я в "видеоредакторстве" на уровне додетсадовского возраста,...

6
500 / 346 / 200
Регистрация: 20.10.2016
Сообщений: 1,101
17.04.2017, 16:37 2
Впихнуть его в TJPGImage модуль JPEG.pas
У вас он сейчас bmp в jpg раз так в 10 меньше будет.
0
884 / 586 / 179
Регистрация: 28.02.2017
Сообщений: 2,359
Записей в блоге: 1
17.04.2017, 16:59 3
https://www.cyberforum.ru/post10286931.html

https://www.cyberforum.ru/post10306738.html
0
Эксперт Pascal/Delphi
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
17.04.2017, 17:30 4
Цитата Сообщение от Артемида1996 Посмотреть сообщение
скриншоты получаются слишком тяжелыми
сохраняйте в PNG.

Добавлено через 52 секунды
Цитата Сообщение от TFullControl Посмотреть сообщение
jpg раз так в 10 меньше будет
в PNG еще меньше.

Добавлено через 1 минуту
Артемида1996, версия среды какая?
0
GoodWeather
18.04.2017, 01:30
  #5

Не по теме:

Не, jpeg с потерями же, оно будет меньше PNG. Ну если тока не задавать самое максимальнейшее качество.

0
-79 / 1 / 0
Регистрация: 26.11.2016
Сообщений: 146
18.04.2017, 15:15  [ТС] 6
Цитата Сообщение от TFullControl Посмотреть сообщение
Впихнуть его в TJPGImage модуль JPEG.pas
Это-то понятно. Но для этого, мне нужно понять, где переменная типа TCanvas, хранит полученный скриншот, как получить к нему доступ, чтобы сжать?
0
500 / 346 / 200
Регистрация: 20.10.2016
Сообщений: 1,101
18.04.2017, 15:28 7
Цитата Сообщение от Артемида1996 Посмотреть сообщение
Но для этого, мне нужно понять, где переменная типа TCanvas, хранит полученный скриншот, как получить к нему доступ
Сильно заморачиваетесь, если не отступать в сторону от вашего примера то:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var
  ScreenTC : TCanvas;
  ScreenBM : TBitMap;
  jpg: TJPEGImage;
begin
  jpg:= TJPEGImage.Create;
  ScreenTC := TCanvas.Create;
  ScreenBM := TBitMap.Create;
  ScreenTC.Handle := GetDC(Hwnd_Desktop);
  ScreenBM.Width := Screen.Width;
  ScreenBM.Height := Screen.Height;
  ScreenBM.Canvas.CopyRect(ScreenBM.Canvas.ClipRect, ScreenTC, ScreenTC.ClipRect);
  jpg.Assign(ScreenBM);
  jpg.SaveToFile(TargetFile);
  ScreenBM.Free;
  ScreenTC.Free;
  jpg.Free;
end;
0
18.04.2017, 15:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.04.2017, 15:28
Помогаю со студенческими работами здесь

Как сжать видео?
Подскажите пожалуйста, какой прогой можно сжать видео, чтобы записать больше информации на DVD...

Как сжать строку?
Hhhhhhhhhhhhhheeeellooooo -> Hh9h4e4l2o5 Перепробовал разное , но именно такого результат не...

Как сделать такое же всплывающие диалоговое окно как на ask.fm + скриншот
Нужно сделать, чтобы при нажатии на кнопку появлялось окно снизу. Как это реализовано на скриншоте?...

Как сделать скриншот с формы, но что бы белый цвет отображался как прозрачный
Как сделать скриншот с формы, но что бы белый цвет отображался как прозрачный? Кто может помочь?

Как удалить скриншот?
Я в таймере, делаю проверку скриншота на пиксель, если нужный цвет в координатах есть, выполняется...

Как создать скриншот?
Нужна помощь в получение скриншота экрана средствами DirectX9 SDK,может кто такое уже...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru