Змінити глибину кольору у Image

Як можна Змінити глибину кольору у Image і зберегти з розширенням jpg (щоб якнайменше займав місця)

Varjpg: TJPEGImage;Beginjpg := TJPEGImage.Create; jpg.CompressionQuality: = 50;// Відсоток стисненняjpg.Assign(Image.picture.bitmap); jpg.SaveToFile("Lalala.jpg");End;

У наздогін:Забув звільнити JPG:-oFreeAndNil(jpg);

Jpeg має 24-бітний формат, хоч ти трісну. Тут нічого не вдієш. Втім, якщо брати картинку з TBitmap, то можна задати що завгодно, див. TBitmap.PixelFormat, а потім дуй її в джейпег. Але виграш буде маленьким. Хоча TJPEGImage.PixelFormat є теж. Але писатиметься все одно в 24 біти. Краще спочатку бітмеп спростити до убогості, а потім пхати в джейпег.

Але загалом залежить від картинки. Якщо там кнопочка на 256 кольорів, які, відкинувши відтінки нормально візуально зводяться до 16, тоді має сенс зробити TBitmap.PixelFormat=pf8bit а джейпег при стисканні зрадіє. Але в результаті джепег буде все одно 24бітним.

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

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

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

Потрібно стандартними, дельфовими засобами, або безкоштовними

Ну народ, може хто знає, як палітру змінити, щоб неповнокольорова була, а чорно-біла. роблю так: сканую в 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 на ту ж сторінку

Ну народ, може хто знає, як палітру змінити, щоб не повнокольорова була, а чорно-біла. роблю так: сканую в 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 на ту ж сторінку

Як з якості не знущайся, все одно, якщо в JPG точок багато, він займатиме МІСЦЕ :) Тому, мабуть, варто зменшити дозвіл при скануванні. І потім, якщо це документи, то їх не кожну хвилину з Бази беруть => можна потиснути додатково яким-небудь архіватором, але з JPG це не пройде - менше він не стане, то краще TIFF. А ще JPG буває GrayScale, тобто його розмір має суттєво зменшитися. Шукай таку налаштування. Успіхів!