Страница 1 из 1
FreeImage -> ImageEx Crop&Save фотографии
Добавлено: 21 Март 2012, 8:55
Admin
Кто нибудь пользовался по серьезному
FreeImage библиотекой.
Интересует RESIZE и фиксированный CROP для jpeg файла с последующей записью.
Re: FreeImage
Добавлено: 21 Март 2012, 10:13
Дед Пахом
Я делал превращение больших изображений в thumbnails (оба в blob-ах), используя ImageEx:
Код: Выделить всё
ImageEx:Thumbnail PROCEDURE (BLOB pSrc, BLOB pDst, SIGNED pWidth, SIGNED pHeight)
tnail ImageExThumbnailerClass
saver ImageExJpegSaverClass
CODE
tnail.Width = pWidth
tnail.Height = pHeight
tnail.AutoOrientation = TRUE
tnail.Mode = IMAGEEXTHUMBMODE:CROP
tnail.StretchFilter = IMAGEEXSTRETCHFILTER:LANCZOS
tnail.DrawMode = IMAGEEXDRAWMODE:OPAQUE
tnail.Saver &= saver
RETURN CHOOSE(tnail.CreateThumbnail(pSrc, pDst) <> 0)
Re: FreeImage
Добавлено: 21 Март 2012, 11:07
seawolf
Нашел - берем на вход файл tif с диска, грузим в память и проверяем размер - если подходит то выковыриваем часть картинки, далее сохраняем в 300 dpi pbm на диск. Использовал FreeImage_Copy а не Crop.
PATH_IMG = Clip(TifTitle)
PATH_IMG_NEW = Sub(TifTitle,1,Len(clip(TifTitle))-4) & 'N.pbm'
RETFIF = 18
pImage = FreeImage_Load(RETFIF,PATH_IMG,0)
If pImage <> 0
bWidth = FreeImage_GetWidth(pImage)
bHeight = FreeImage_GetHeight(pImage)
If ((bWidth => 2183 and bWidth <= 2188) and (bHeight => 1415 and bHeight <= 1421)) or ((bWidth => 2183 and bWidth <= 2188) and (bHeight => 2833 and bHeight <= 2837))
If bHeight < 2800 !120
If OHeight = 'Max' !1326x2750|1346x2770
pImageNew = FreeImage_Copy(pImage,2,310,2183,1326) !1326
Else
pImageNew = FreeImage_Copy(pImage,2,310,2183,1346) !1346
.
Else !240
If OHeight = 'Max'
pImageNew = FreeImage_Copy(pImage,2,310,2183,2750) !2750
Else
pImageNew = FreeImage_Copy(pImage,2,310,2183,2770) !2770
.
.
If pImageNew <> 0
FreeImage_SetDotsPerMeterX(pImageNew,11811) !set 300 dpi
FreeImage_SetDotsPerMeterY(pImageNew,11811)
bResult = FreeImage_Save(FIF_PBM,pImageNew,PATH_IMG_NEW,0) ! Save new image
If bResult = 0
MESSAGE(Clip(PATH_IMG_NEW) & ' can not be saved')
.
Else
MESSAGE(Clip(PATH_IMG_NEW) & ' can not be saved')
.
Else
MESSAGE(Clip(PATH_IMG) & ' - not right size')
.
FreeImage_UnLoad(pImage)
Else
MESSAGE('Image can not be loaded')
.
Re: FreeImage
Добавлено: 21 Март 2012, 11:21
Yufil
Фрагментик из действующей программы. Фотка обрезается по формату 4x3
W#=cfiObject4.iImage.GetWidth()
H#=cfiObject4.iImage.GetHeight()
!
If H#>W# * 0.75
NewH#=W# * 0.75
cfiObject4.iImage.Crop(0,(H#-NewH#)/2,W#,NewH#)
Elsif H#<W# * 0.75
NewW#=H# / 0.75
cfiObject4.iImage.Crop((W#-NewW#)/2,H#,NewW#,H#)
End
И масштабируется по размеру 352 x 264 пиксела, после чего сохраняется.
cfiObject4.iImageControl.Reset()
W=352
H=264
cfiObject4.iImage.Rescale(W,H,2)
FileName= Main:Id & '_' & MIM:Id & '.jpg'
FileName=LongPath() & '\Image\' & fileName
cfiObject4.iImage.Save(FileName,2)
Re: FreeImage
Добавлено: 21 Март 2012, 12:26
Admin
В идеале конечно что бы область для кропа к примеру 600х600 можно было бы по фотке таскать. И при необходимости тут же уменьшать фотку что бы кроп был красивый...
Фотки для программы кадров и т.д. делать.
Всем спасибо. Посмотрю.
Re: FreeImage
Добавлено: 21 Март 2012, 14:58
Дед Пахом
Мы с помощью шаблонов ProScan такое делаем - моментальное фото с видеокамеры с возможностью редактирования (crop и всё такое прочее, целый редактор встроенный). Причём источник может быть не только камера, а практически всё.
Re: FreeImage
Добавлено: 22 Март 2012, 8:06
Admin
Хотел сначала с помощью FreeImage сделать но по итогу сделал на ImageEx.
Получилось примерно вот так:
Re: FreeImage -> ImageEx Crop&Save фотографии
Добавлено: 22 Март 2012, 13:00
Ал
Admin писал(а): CROP для jpeg файла
http://downloads.sourceforge.net/freeim ... ge3153.pdf страница 99 (103 в STDU Viewer)
FreeImage_JPEGCrop и FreeImage_JPEGCropU
ну и обновление там
http://freeimage.sourceforge.net/index.html
March 17th, 2012
FreeImage 3.15.3 released
Release 3.15.3 is a maintenance release that mainly fix 64-bit compilation issues.
The library has been updated with the new LibPNG (1.5.9), LibTIFF (4.0.1). FreeImage is also distributed with an updated VB6 wrapper.
As usual, check the changes log for full details (especially for bug fixes) and check also the updated FreeImage documentation.
Re: FreeImage -> ImageEx Crop&Save фотографии
Добавлено: 22 Март 2012, 17:28
Admin
Спасибо. Но то что сделал уже нравится

А лишняя библиотека (точнее 3) сильно не парит.
Re: FreeImage -> ImageEx Crop&Save фотографии
Добавлено: 22 Март 2012, 17:43
Ал
это для завершенности картины, чтоб в кучке было...
