FreeImage -> ImageEx Crop&Save фотографии

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Закрыто
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

FreeImage -> ImageEx Crop&Save фотографии

Сообщение Admin »

Кто нибудь пользовался по серьезному FreeImage библиотекой.
Интересует RESIZE и фиксированный CROP для jpeg файла с последующей записью.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3291
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Re: FreeImage

Сообщение Дед Пахом »

Я делал превращение больших изображений в 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)
С уважением, ДП
seawolf
Старожил
Сообщения: 217
Зарегистрирован: 08 Июль 2005, 11:23
Откуда: St. Petersburg

Re: FreeImage

Сообщение 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')
.
Последний раз редактировалось seawolf 21 Март 2012, 11:27, всего редактировалось 1 раз.
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Re: FreeImage

Сообщение 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)
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Re: FreeImage

Сообщение Admin »

В идеале конечно что бы область для кропа к примеру 600х600 можно было бы по фотке таскать. И при необходимости тут же уменьшать фотку что бы кроп был красивый...
Фотки для программы кадров и т.д. делать.

Всем спасибо. Посмотрю.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3291
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Re: FreeImage

Сообщение Дед Пахом »

Мы с помощью шаблонов ProScan такое делаем - моментальное фото с видеокамеры с возможностью редактирования (crop и всё такое прочее, целый редактор встроенный). Причём источник может быть не только камера, а практически всё.
С уважением, ДП
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Re: FreeImage

Сообщение Admin »

Хотел сначала с помощью FreeImage сделать но по итогу сделал на ImageEx.
Получилось примерно вот так:
select_crop_image.png
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Ал
✯ Ветеран ✯
Сообщения: 1039
Зарегистрирован: 08 Июль 2005, 6:48
Откуда: Россия
Поблагодарили: 1 раз

Re: FreeImage -> ImageEx Crop&Save фотографии

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

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.
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Re: FreeImage -> ImageEx Crop&Save фотографии

Сообщение Admin »

Спасибо. Но то что сделал уже нравится :)
А лишняя библиотека (точнее 3) сильно не парит.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Ал
✯ Ветеран ✯
Сообщения: 1039
Зарегистрирован: 08 Июль 2005, 6:48
Откуда: Россия
Поблагодарили: 1 раз

Re: FreeImage -> ImageEx Crop&Save фотографии

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

:D
это для завершенности картины, чтоб в кучке было... :wink:
Закрыто