Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.08.24;
Скачать: CL | DM;

Вниз

Траблы при получении уровня компресии у JPG-файлов   Найти похожие ветки 

 
leonidus ©   (2007-07-13 22:44) [0]

Делаю так:
 
jpg:=TJpegImage.Create;
jpg.LoadFromFile(path);
jpg_compress:=jpg.CompressionQuality;

так вот какой бы я файл не открыл jpg_compres всегда равен 90, очевидно что это не так, а мне нужно знать точное значение компрессии т.к. я загружаю картинку, обрабатываю ее и сохраняю обратно на диск и при этом важно сохранить с той-же компрессией, но для этого нужно знать исходную компрессию...


 
Sambrook ©   (2007-07-14 13:43) [1]


> так вот какой бы я файл не открыл jpg_compres всегда равен
> 90, очевидно что это не так, а мне нужно знать точное значение
> компрессии

На этот вопрос есть ответ в справке:
This property is not used for reading in files.
Причина простая - формат JPEG не предусматривает хранение данного параметра.


т.к. я загружаю картинку, обрабатываю ее и сохраняю
> обратно на диск и при этом важно сохранить с той-же компрессией,
>  но для этого нужно знать исходную компрессию...

Можете провести простой эксперимент - загрузить jpeg, сохраненный, например, с 70% компресиией и записать его со 100%. Потом сравните размеры двух файлов и сделайте выводы.


 
homm ©   (2007-07-15 15:16) [2]

Сжатие — чисто субъективный параметр, измеряемый в попугаях, у любой программы он может быть свой.


> и при этом важно сохранить с той-же компрессией

Этого не получится никогда. Формат jpg — формат сжатия с потерей качества, при любом следующем пересохранении это качество неизбежно теряется и теряется. Чем меньше пересохранений, тем лучше сохраняется исходное изображение.

Выберете для своих целей другой формат, например PNG.


 
Efir ©   (2007-07-15 15:34) [3]


> Этого не получится никогда.


Не факт, да jpg с потерей качества сжимает, но насколько мне известно при опред. кратности размеров исходного изображения (вроде 16) ухудшения качества после трансформации и сохранения не происходит.


 
homm ©   (2007-07-15 15:55) [4]

> кратности размеров исходного изображения (вроде 16) ухудшения
> качества после трансформации и сохранения не происходит.

8, не 16.

1) Сделал скртншот форума дельфимастер
2) Сохранил в фотошопе для веба с качеством 30 попугаев.
3) Открыл, сохранение.
4) Снова сохранил с теми-же опциями, под други мененм.
5) Открыл второй файл и вставил его как слой в первый.
6) Выбрал режим наложения «разница» (у меня русский фотошоп :)), нашел пиксели не чисто черного цвета
7) Сделал вывод, что прав я :)


 
homm ©   (2007-07-15 16:46) [5]

> други мененм

Вот эта мешанина символов переводится как «другим именем» :)


 
Sapersky   (2007-07-16 13:34) [6]

при опред. кратности размеров исходного изображения (вроде 16) ухудшения качества после трансформации и сохранения не происходит.

Это называется Jpeg lossless transform. Трансформации не произвольные, а только гор./.верт. отражение, поворот на 90/180/270 град., вырезание фрагмента c кратностью размеров 8 или 16 (зависит от типа сжатия jpeg). Потери качества не происходит, потому что операции выполняются над сжатыми данными (которые представляют собой фрагменты 8*8 или 16*8 пикселей) без перепаковки.
Если нужна pas-реализация - ищите библиотеку pasjpeg, но там вырезание с глюком... где-то у меня была исправленная версия...



Страницы: 1 вся ветка

Текущий архив: 2008.08.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.015 c
2-1216636182
Оксана Вл.
2008-07-21 14:29
2008.08.24
Pos


2-1216280848
programmer90
2008-07-17 11:47
2008.08.24
Командная строка & Delphi


2-1216477996
YaroslavSh
2008-07-19 18:33
2008.08.24
Помогите с отчётом в QuickReport


1-1197265455
Vladimir888
2007-12-10 08:44
2008.08.24
Получить значки дисководов


8-1184700559
Layner
2007-07-17 23:29
2008.08.24
Ищу "удобный холст" для рисования векторными фигурами