Страница 1 из 1

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

Добавлено: 06 Август 2016, 10:05
gopstop2007
Вопрос сообществу, файл TPS c полем BLOB в котором сохраняются картинки, перед отправкой на фтп сервер помощью с сабжа сохраняю картинку на диск размер картинки равен 100кБ, с помощью программы например XnView открываю эту же картинку и пере сохраняю эту же картинку, размер равен 22кБ. Смотрю чем отличается картинка 100кБ и 22кБ, вижу разницу в параметрах пиксель на дюйм - 100кБ(???х???), в 22кБ(72х72). Какие и где параметры в FreeImage нужно задать для получения картинки размера равного 22кБ?
Размеры картинок и прочие параметры, кроме указанных мною, полностью идентичны.

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

Добавлено: 06 Август 2016, 13:05
Ал
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')  ! делаем из стандартной
...

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

Добавлено: 06 Август 2016, 22:47
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)
                   !

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

Добавлено: 07 Август 2016, 12:00
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

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

Добавлено: 07 Август 2016, 12:58
kreator
Открыл файлы Corel'ом (последним). В свойствах совершенно одинаковая информация (к слову разрешение 96х96, встроенных объектов нет). У меня есть подозрение, что качество изображение разное. Правда, на глаз не очень заметно, можно сказать не заметно совсем. Картинка такая (плавные переходы цвета, цвета не сильно разные), что jpeg ещё лучше может упаковать без заметного ухудшения качества. JPEG плохо работает на полноцветной картинке, естественно, при качестве не 100%. Может такие картинки сравнить? И ещё. Сохраняю тем же Corel'ом при 100% качестве, оригинальная становится меньше (112кб), результат - больше (89кб).

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

Добавлено: 07 Август 2016, 13:11
Ал
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)...

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

Добавлено: 07 Август 2016, 17:31
Yufil
Хмм, собственно, для отправки по FTP эти картинки и предназначались.
Каждая картинка шла в трёх размерах - маленькая, средняя и большая, от 10К до 300К
Программа работала (а может быть, и работает до сих пор), а количеством пикселов на дюйм даже не поинтересовался.
Оно надо ?

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

Добавлено: 07 Август 2016, 18:00
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()
 
Таким образом, на экран выводится та самая картинка, которая лежит в базе.
Скорее всего я всё неправильно понял и дело совсем не в этом :)

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

Добавлено: 07 Август 2016, 18:07
Ал
про 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

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

Добавлено: 07 Август 2016, 20:37
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
Интересно, спасибо посмотрю :)

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

Добавлено: 08 Август 2016, 12:04
Ал
фото-картинки больше 300кб не создаются автоматом маленькие картинке на сервере
самое очевидное - размер файла проверять при записи в базу или сразу перед отправкой и не прошедшие отбор перед отправкой дополнительно обрабатывать (JpegQuality, ColorDepth,...), пока размер в норму не станет укладываться?