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

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

Изменить глубину цвета у Image [D5, D6, Win95/98]


dim- ©   (2002-12-17 00:24:00) 

Как можно Изменить глубину цвета у Image и сохранить с расширением jpg (чтобы как можно меньше занимал места)


dim-   (2002-12-19 12:23:00) [1]

Спасибо Мышка, очень помогло


Rouse_   (2002-12-19 00:55:00) [2]

> Anatoly Podgoretsky © (17.12.02 09:28)
> Открою тайнц, не все просмотровщики могут открыть и JPEG

Анатолий, нельзя ли поподробнее, для некоторых моих программ это критично, они выводят данные в JPEG. Где подводные камни?

Заранее спасибо


Мышь   (2002-12-19 00:40:00) [3]

Как над качеством не издевайся, все равно, если в JPG точек много, он будет занимать МЕСТО :) Поэтому, видимо, стоит уменьшить разрешение при сканировании.
И, потом, если это документы, то их не каждую минуту из Базы берут => можно пожать дополнительно каким-нибудь архиватором, но с JPG это не пройдет - меньше он не станет, так что лучше TIFF.
А еще JPG бывает GrayScale, то есть его размер должен существенно уменьшиться. Поищи такую настроечку.
Успехов!


dim-   (2002-12-18 12:12:00) [4]

Ну народ, может кто знает как палитру сменить, чтобы не полноцветная была, а черно-белая.
делаю так: сканирую в image1 страницу текста
image1.Picture.Bitmap.PixelFormat:=pf8bit;
image1.Picture.Bitmap.Assign(jpg);
jpg.CompressionQuality := 30;
jpg.Performance := jpBestSpeed;
jpg.Assign(image1.Picture.Graphic);
jpg.SaveToFile(dirpath);
но результат как 130-200 Kb на страницу так и остается, а тотже FotoEdit 60Kb на ту же страницу


dim-   (2002-12-17 16:56:00) [5]

Ну народ, может кто знает как палитру сменить, чтобы не полноцветная была, а черно-белая.
делаю так: сканирую в image1 страницу текста
image1.Picture.Bitmap.PixelFormat:=pf8bit;
image1.Picture.Bitmap.Assign(jpg);
jpg.CompressionQuality := 30;
jpg.Performance := jpBestSpeed;
jpg.Assign(image1.Picture.Graphic);
jpg.SaveToFile(dirpath);
но результат как 130-200 Kb на страницу так и остается, а тотже FotoEdit 60Kb на ту же страницу


dim-   (2002-12-17 10:10:00) [6]

Надо стандартными, дельфовыми средствами, или бесплатными


- Andrew -   (2002-12-17 10:05:00) [7]

Ставь себе Envision Image Library и наслаждайся.
А в базу лучше все-таки Tiff кидать, как правильно сказал app.


Anatoly Podgoretsky   (2002-12-17 09:28:00) [8]

Открою тайнц, не все просмотровщики могут открыть и JPEG


dim-   (2002-12-17 09:22:00) [9]

Tiff это конечно хорошо, но его вроде не все просмотрщики могут открыть


app   (2002-12-17 09:16:00) [10]

Тебе надо смотреть не в сторону JPEG, а в сторону GIF/TIFF, может даже именно в сторону TIFF он для этого предназначен.
Данные форматы без потери качества, сжатие тоже есть, в итоге у тебя не будет грязи на документе и размер будет меньше, единственной проблемой является то, что тебе надо будет найти подходящую библиотеку.


dim-   (2002-12-17 09:02:00) [11]

у меня сканируемые документы, то есть черно-белые, будут храниться в Базе Данных, вот и нужен размер по меньше


Моджахед жив   (2002-12-17 02:35:00) [12]

Но, в общем, зависит от картинки. Если там кнопочка на 256 цветов, которые, отбросив оттенки нормально визуально сводятся к 16, то тогда имеет смысл сделать TBitmap.PixelFormat=pf8bit а джейпег при сжатии возрадуется. Но в итоге джепег будет все-равно 24битным.


Моджахед жив   (2002-12-17 02:29:00) [13]

Jpeg имеет 24-битный формат, хоть ты тресни. Тут ничего не поделаешь. Впрочем, если брать картинку из TBitmap,
то можно задать что угодно, см. TBitmap.PixelFormat, а потом дуй ее в джейпег. Но выигрыш будеть маленький.
Хотя TJPEGImage.PixelFormat имеется тоже. Но писаться будет все равно в 24 бита. Лучше сначла битмэп упростить до
убожества, а потом пихать в джейпег.


Vagrant   (2002-12-17 02:12:00) [14]

В догонку: Забыл освободить JPG :-o
FreeAndNil(jpg);


Vagrant   (2002-12-17 02:09:00) [15]

Примерно так:


Varjpg: TJPEGImage;
Begin
jpg := TJPEGImage.Create;
jpg.CompressionQuality := 50; // Процент сжатия
jpg.Assign(Image.picture.bitmap);
jpg.SaveToFile("Lalala.jpg");
End;


Наверх

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