Страница 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.
Получилось примерно вот так:
select_crop_image.png

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
Ал
:D
это для завершенности картины, чтоб в кучке было... :wink: