FreeImage размер сохраненного файла картинки

Программы на Clarion, шаблоны, библиотеки и пр.

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

FreeImage размер сохраненного файла картинки

Сообщение gopstop2007 »

Вопрос сообществу, файл TPS c полем BLOB в котором сохраняются картинки, перед отправкой на фтп сервер помощью с сабжа сохраняю картинку на диск размер картинки равен 100кБ, с помощью программы например XnView открываю эту же картинку и пере сохраняю эту же картинку, размер равен 22кБ. Смотрю чем отличается картинка 100кБ и 22кБ, вижу разницу в параметрах пиксель на дюйм - 100кБ(???х???), в 22кБ(72х72). Какие и где параметры в FreeImage нужно задать для получения картинки размера равного 22кБ?
Размеры картинок и прочие параметры, кроме указанных мною, полностью идентичны.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Ал
✯ Ветеран ✯
Сообщения: 1011
Зарегистрирован: 08 Июль 2005, 6:48
Откуда: Россия

FreeImage размер сохраненного файла картинки

Сообщение Ал »

http://www.clarionfreeimage.com/
You may also use the FreeImage base class without the image control for those times when you don't need to display the image. For example, it works perfectly to create thumbnails of all images in a folder.

The following code is all that's required to load an image and create a thumbnail 64 pixels wide using a BSpline resampling filter, and then save it in a different file.

ThumbImage FreeImageClass
Code
If ThumbImage.iImage.Load('C:\images\ImageFile.jpg')
ThumbImage.iImage.Thumbnail(64, FILTER_BSPLINE)
ThumbImage.iImage.SaveAs('C:\images\ImageFileThumb.jpg')
End

Here are some of the other operations that the base class supports:
UP
если не важно, что только FreeImage http://forum.clarionlife.net/phpbb/view ... e&start=15, то посмотреть ImageEx

Код: Выделить всё

if ~'.png' = ExtractFileExt(clip(longpath(PATH:Photo))&'\'&clip(loc:Фотография1)) ! не PNG
	ThumbFeatures(clip(longpath(PATH:Photo))&'\'&clip(loc:Фотография1),PWidth,PHeight,'_thm')  ! делаем из стандартной
...
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

FreeImage размер сохраненного файла картинки

Сообщение Yufil »

Я менял размер через rescale
Картинка формируется в трёх разных размерах - маленьком, среднем и большом

Код: Выделить всё

 
                   cfiObject4.iImageControl.Reset()
                   W=352
                   H=264
                   cfiObject4.iImage.Rescale(W,H,2)
                   FileName= Main:Id & '_' & MIM:Id & '.jpg'
                   !S.Cat('<13,10><<IMAGE FILE="' & Ansi2Html(FileName) & '"/>')
                   FileName=LongPath() & '\Image\' & fileName
                   cfiObject4.iImage.Save(FileName,2)
                   MsgQ:S='Картинка ' & FileName
                   Do AddMsgQ
                   !
                   cfiObject4.iImageControl.Reset()
                   W=176
                   H=132
                   cfiObject4.iImage.Rescale(W,H,2)
                   FileName= Main:Id & '_' & MIM:Id & '_medium.jpg'
                   !S.Cat('<13,10><<IMAGE TYPE="MEDIUM" FILE="' & Ansi2Html(FileName) & '"/>')
                   FileName=LongPath() & '\Image\' & fileName
                   cfiObject4.iImage.Save(FileName,2)
                   !
                   W=72
                   H=54
                   cfiObject4.iImage.Rescale(W,H,2)
                   FileName= Main:Id & '_' & MIM:Id & '_small.jpg'
                   !S.Cat('<13,10><<IMAGE TYPE="SMALL" FILE="' & Ansi2Html(FileName) & '"/>')
                   FileName=LongPath() & '\Image\' & fileName
                   cfiObject4.iImage.Save(FileName,2)
                   !
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

FreeImage размер сохраненного файла картинки

Сообщение gopstop2007 »

Мне не надо менять размер картинки, :)
ThumbImage FreeImageClass
Code
If ThumbImage.iImage.Load('C:\images\ImageFile.jpg')
ThumbImage.iImage.Thumbnail(64, FILTER_BSPLINE)
ThumbImage.iImage.SaveAs('C:\images\ImageFileThumb.jpg')
End
Ал, Ваш код создает миниатюру размером 64
мой вопрос: разный размер(вес) файлов одной и той же картинки с одинаковым размером (700х700), в моем случае картинка сохраняется в JPG
Вот два файла для сравнения
файл с большим размером файла https://mega.nz/#!yYBxDZbR!SijZ4PP9DH2u ... YVMzoeFHKU
меньшим https://mega.nz/#!zFpDUaQS!LPoKp-P8S04y ... LZTBL5f-rc
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

FreeImage размер сохраненного файла картинки

Сообщение kreator »

Открыл файлы Corel'ом (последним). В свойствах совершенно одинаковая информация (к слову разрешение 96х96, встроенных объектов нет). У меня есть подозрение, что качество изображение разное. Правда, на глаз не очень заметно, можно сказать не заметно совсем. Картинка такая (плавные переходы цвета, цвета не сильно разные), что jpeg ещё лучше может упаковать без заметного ухудшения качества. JPEG плохо работает на полноцветной картинке, естественно, при качестве не 100%. Может такие картинки сравнить? И ещё. Сохраняю тем же Corel'ом при 100% качестве, оригинальная становится меньше (112кб), результат - больше (89кб).
We are hard at work… for you. :)
Ал
✯ Ветеран ✯
Сообщения: 1011
Зарегистрирован: 08 Июль 2005, 6:48
Откуда: Россия

FreeImage размер сохраненного файла картинки

Сообщение Ал »

gopstop2007 писал(а):Мне не надо менять размер картинки, :)
ThumbImage FreeImageClass
Code
If ThumbImage.iImage.Load('C:\images\ImageFile.jpg')
ThumbImage.iImage.Thumbnail(64, FILTER_BSPLINE)
ThumbImage.iImage.SaveAs('C:\images\ImageFileThumb.jpg')
End
Ал, Ваш код создает миниатюру размером 64
мой вопрос: разный размер(вес) файлов одной и той же картинки с одинаковым размером (700х700), в моем случае картинка сохраняется в JPG
Вот два файла для сравнения
файл с большим размером файла https://mega.nz/#!yYBxDZbR!SijZ4PP9DH2u ... YVMzoeFHKU
меньшим https://mega.nz/#!zFpDUaQS!LPoKp-P8S04y ... LZTBL5f-rc
Согласен, просмотрел :oops: , - пора в отпуск))
Но тем не менее попробуй сделать миниатюру 700*700...
да, приведенный выше код не мой - с сайта по ссылке...
по теме - думаю надо смотреть на FreeImage Bitmap function... или на ImageEx - "поиграть" с до устраивающего результата с fi.Iimage.GetBPP() ... fi.Iimage.ConvertColorDepth(FI_24BIT,,) ... fi.Iimage.SetSaveOption(JpegQuality)...
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

FreeImage размер сохраненного файла картинки

Сообщение Yufil »

Хмм, собственно, для отправки по FTP эти картинки и предназначались.
Каждая картинка шла в трёх размерах - маленькая, средняя и большая, от 10К до 300К
Программа работала (а может быть, и работает до сих пор), а количеством пикселов на дюйм даже не поинтересовался.
Оно надо ?
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

FreeImage размер сохраненного файла картинки

Сообщение Yufil »

Кстати, ещё вопрос - а каким способом картинка сохранялась в Blob? Дело в том, что при сохранении картинки с экрана можно получить битмап картиники, а можно исходник файла. Это криво и непонятно описано в параметре Prop:PrintMode
Например, если я пишу

Код: Выделить всё


DOC                  FILE,DRIVER('TOPSPEED',Glo:DriverOptions),OWNER(Glo:OwnerName),NAME(Fn:Doc),PRE(DOC),BINDABLE,CREATE,THREAD
DIR_FNAME                KEY(DOC:DIR,DOC:FNAME),DUP,NOCASE,OPT
VALUE                       BLOB,BINARY
Record                   RECORD,PRE()
DIR                         CSTRING(16)
FNAME                       CSTRING(260)
Date                        ULONG
Time                        ULONG
                         END
                     END   
                     
....                      
               ?Image{Prop:PrintMode}=3
                ?Image{Prop:ImageBlob}=Doc:Value{Prop:Handle}
То в Blob идёт не битмэп, а картинка, которую я отражал. А если ещё чуть вникнуть и положить в Blob собственно файл с картинкой, он будет выведен и он же сохранён, примерно так

Код: Выделить всё

           ?Image{Prop:PrintMode}=3
           ?Image{Prop:Text}=Glo:MainDir & '\PIC\' &  DirQ:Name
           Doc:Date=DirQ:Date2
           Doc:Time=DirQ:Time
           Doc:Value{Prop:Handle}=?Image{Prop:ImageBlob}
           PackBlob(Doc:Value)
           Access:Doc.Update()
 
Таким образом, на экран выводится та самая картинка, которая лежит в базе.
Скорее всего я всё неправильно понял и дело совсем не в этом :)
Ал
✯ Ветеран ✯
Сообщения: 1011
Зарегистрирован: 08 Июль 2005, 6:48
Откуда: Россия

FreeImage размер сохраненного файла картинки

Сообщение Ал »

про 3 варианта размера - тут видимо особо ничего не придумаешь, у всех примерно похоже
Буфер обмена-1.jpg
а по поводу примера с XnView - у неё в описании указано
The JPEG functions are based in part on the work of the Independent JPEG group
The PNG functions are based in part on the work of the Group 42, Inc
This software use the compression library (ZLIB) of Jean-loup Gailly and Mark Adler
, поисковик выдал много чего:
http://www4.cs.fau.de/Services/Doc/grap ... bjpeg.html http://www.quanser.com/Products/quarc/d ... cense.html http://newsgroup.xnview.com/viewtopic.php?f=79&t=23119 http://graphicssoft.about.com/od/format ... sfacts.htm
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

FreeImage размер сохраненного файла картинки

Сообщение gopstop2007 »

Yufil писал(а):Хмм, собственно, для отправки по FTP эти картинки и предназначались.
Каждая картинка шла в трёх размерах - маленькая, средняя и большая, от 10К до 300К
Программа работала (а может быть, и работает до сих пор), а количеством пикселов на дюйм даже не поинтересовался.
Оно надо ?
Спасибо за подробные разъяснения с примерами кода :) Но в данном случае, проще отослать картинку (большую), а из нее нарезаются маленькие на сервере Opencart-ом :)
Yufil писал(а):Кстати, ещё вопрос - а каким способом картинка сохранялась в Blob?
Хороший вопрос :)
Когда отсылаются 3 000-10 000 картинок, вес имеет значение, и еще есть ограничение на Opencart, фото-картинки больше 300кб не создаются автоматом маленькие картинке на сервере, правда от хостинга это тоже зависит. :(
Ал писал(а): а по поводу примера с XnView - у неё в описании указано
The JPEG functions are based in part on the work of the Independent JPEG group
The PNG functions are based in part on the work of the Group 42, Inc
This software use the compression library (ZLIB) of Jean-loup Gailly and Mark Adler
, поисковик выдал много чего:
http://www4.cs.fau.de/Services/Doc/grap ... bjpeg.html http://www.quanser.com/Products/quarc/d ... cense.html http://newsgroup.xnview.com/viewtopic.php?f=79&t=23119 http://graphicssoft.about.com/od/format ... sfacts.htm
Интересно, спасибо посмотрю :)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Ал
✯ Ветеран ✯
Сообщения: 1011
Зарегистрирован: 08 Июль 2005, 6:48
Откуда: Россия

FreeImage размер сохраненного файла картинки

Сообщение Ал »

фото-картинки больше 300кб не создаются автоматом маленькие картинке на сервере
самое очевидное - размер файла проверять при записи в базу или сразу перед отправкой и не прошедшие отбор перед отправкой дополнительно обрабатывать (JpegQuality, ColorDepth,...), пока размер в норму не станет укладываться?
Ответить