Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2010, 15:37   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Как выбрать оптимальный формат для графического файла?

Добрый вечер еще раз! Я через программу XnView сканирую кое какие файлы в BMP формат, т.к. из него потом перевожу в JPEG, который затем перевожу в PDF. Проблема в размерах файлов после сканирования, слишком большие. Например, один BMP скан весит 500kb, перевожу его в JPEG и сжимаю так:
Код:
 b:=TBitmap.Create;
 jpg:=TJpegImage.Create;
 FindFirst(Form1.RzStatusPane10.Caption +'*.bmp',faAnyFile,sr);
 with RzStringGrid5 do
  for t:=0 to RowCount-1 do
  begin
   b.LoadFromFile(Form1.RzStatusPane10.Caption + sr.Name);
   jpg.Assign(b);
   jpg.CompressionQuality:=5;
   jpg.Compress;
   jpg.SaveToFile(Form1.Edit2.Text + Form1.RzStringGrid5.Cells[0,t] + '.jpeg');
   Application.ProcessMessages;
   if FindNext(sr)<>0 then break;
  end;
   b.Free;
   jpg.Free;
   FindClose(sr);
получаю файл размером примерно в 200кб. Это тоже много очень для одного файл. Вопрос в том как крутить формата так, чтобы конечный JPEG файл был около 90-100кб, и после получился бы PDF файл размером на 10-20кб меньше. Какой формат испозовать: GIF? PNG?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 29.11.2010, 15:43   #2
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Качество Jpeg, считается приемлемым при 65% процентов сжатия.
Поэкспериментируй со значением jpg.CompressionQuality
_SERGEYX_ вне форума Ответить с цитированием
Старый 29.11.2010, 16:06   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

А размер уменьшится?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 29.11.2010, 16:18   #4
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

А попробовать?
Я проверил...
Код:
 jpg.CompressionQuality:=65;
Картинка 1024 х 768
Размер bmp - 2,2 мб
Jpeg на выходе около 115 кб.
Если значение CompressionQuality < 50 - заметны искажения... но это от картинки зависит.
_SERGEYX_ вне форума Ответить с цитированием
Старый 29.11.2010, 16:30   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

В общем случае сильно зависит от содержимого. Поэтому и так много различных форматов. Картинки с разным содержимым могут иметь наименьший размер либо в JPG, либо в PNG, а иногда даже и в BMP.

Последний раз редактировалось mihali4; 29.11.2010 в 16:39.
mihali4 вне форума Ответить с цитированием
Старый 29.11.2010, 16:56   #6
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Картинка Ч/Б. Размер скана после сканирования 2000х1000 с чем-то...
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 29.11.2010, 17:33   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Выкладывайте пример, помухлюю...
mihali4 вне форума Ответить с цитированием
Старый 29.11.2010, 18:23   #8
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2mihali4
Цитата:
Картинки с разным содержимым могут иметь наименьший размер либо в JPG, либо в PNG, а иногда даже и в BMP.
бред. никогда изображение в формате bmp не будет меньше аналогичного в джепеге или пнг. вне зависимости от содержимого
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 29.11.2010, 19:12   #9
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
бред. никогда изображение в формате bmp не будет меньше аналогичного в джепеге или пнг. вне зависимости от содержимого
Меньше png не будет, но чёрно-белый BMP 1 bpp меньше jpg'а с качеством 50.
Somebody вне форума Ответить с цитированием
Старый 02.12.2010, 19:03   #10
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

И все такие не получается загрузить и связать через Assign GIF и JPEG.
Код:
var
 jpg: TJpegImage;
 gif: TGIFImage;
begin
 gif:=TGIFImage.Create;
 jpg:=TJpegImage.Create;
 FindFirst(Form1.RzStatusPane2.Caption +'*.gif',faAnyFile,sr);
 with RzStringGrid1 do
  for t:=0 to RowCount-1 do
  begin
   gif.LoadFromFile(Form1.RzStatusPane2.Caption + sr.Name);
   jpg.Assign(gif);
   jpg.SaveToFile(Form1.Edit1.Text + Form1.RzStringGrid1.Cells[0,t] + '.jpeg')
может кто подскажет как перевести?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как узнать формат файла в TMemoryStream jskorvin Общие вопросы Delphi 6 23.04.2011 15:20
TCUI - библиотека графического интерфейса для J2ME igorsolkin Общие вопросы по Java, Java SE, Kotlin 37 15.12.2010 02:10
Разработать формат текстового файла для записи команд построения примитивов... -SG- Помощь студентам 1 04.06.2010 15:44
Проверка на существование графического файла, false - скачать с сервера kotzzz Общие вопросы Delphi 7 22.01.2010 13:10
Оптимальный выбор для новичка C++ Builder 5, 6... ? Adamant C++ Builder 1 24.10.2007 12:25