Создание "иконок" для отображения графических файлов

Clarion, Clarion 7

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

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

Создание "иконок" для отображения графических файлов

Сообщение gopstop2007 »

Надо вывести blob(TPS) без создания файла, нашел заметку http://computer-programming-forum.com/1 ... be07b0.htm от Jim Kan
if you using my class you can read the image into memory.
Unless there is some fancy t-sql way to determine the size of the blob,
store the size of the blob in a long field.
retrieve the size.
call :
hglobal=globalalloc(42H,sizeofblob)
lpglobal=globallock(hglobal)
now use the address and size of the allocated memory to call by blobtomem()
method instead of blobtofile() to retrieve the image into memory.
now do:
?image{prop:imageblob}=hglobal
then
globalfree(hglobal)
if the image is a bitmap and in a format such that when written to disk from
disk it can be displayed in a cw image control then this should work too.
you'll have to prototype the global api functions but they are not very
hard. Add error checking. if hglobal or lpglobal are zero, abort.
jim kane
Вопрос, что за его класс на который он ссылается и может уже кто-то пробовал таким способом реализовать?
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
kreator
✯ Ветеран ✯
Сообщения: 5159
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Создание "иконок" для отображения графических файлов

Сообщение kreator »

Чтобы вывести BLOB в Image никакого класса не нужно. Просто:

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

?Image2{PROP:ImageBlob} = CON:TheBlob{PROP:Handle}
А вот закатать картинку в List из памяти - только при помощи высших сил. Много уже обсуждали здесь это, варианта не нашли. Нужно как-то сохранять на диск.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8028
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Создание "иконок" для отображения графических файлов

Сообщение Игорь Столяров »

Как вариант есть еще манипуляции Image & Blob TPS в библиотеке FreeImage ...
• Load and save images to BLOBs in TopSpeed files.

Не могу сказать решит ли это вопрос привязки изображений к ListBox - но можно посмотреть в эту сторону.
Make Clarion Great Again ! 😎
kreator
✯ Ветеран ✯
Сообщения: 5159
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Создание "иконок" для отображения графических файлов

Сообщение kreator »

Игорь Столяров писал(а):Как вариант есть еще манипуляции Image & Blob TPS в библиотеке FreeImage ...
• Load and save images to BLOBs in TopSpeed files.
Видимо, сейчас это стандарт. FreeImage для этого не нужен:

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

CON:TheBlob{PROP:Handle} = ?Image1{PROP:ImageBlob}
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8028
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Создание "иконок" для отображения графических файлов

Сообщение Игорь Столяров »

kreator писал(а): Видимо, сейчас это стандарт.
С обменом между ?Image и Blob проблем нет, это понятно. Но в FreeImage есть работа с Blob для областей памяти.
Make Clarion Great Again ! 😎
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

Создание "иконок" для отображения графических файлов

Сообщение gopstop2007 »

Выше c8 появилось в Image, что-то для изменения размера - Rescale? Может чего-то упустил. Сам использую FreeImage

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

cfiObject1.iImage.Rescale(W, H, R)
А вдруг... :)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
kreator
✯ Ветеран ✯
Сообщения: 5159
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Создание "иконок" для отображения графических файлов

Сообщение kreator »

А что понимается под Rescale? Я не в курсе, FreeImage не пользую.
We are hard at work… for you. :)
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

Создание "иконок" для отображения графических файлов

Сообщение gopstop2007 »

kreator писал(а):А что понимается под Rescale?
Изменение размера картинки, например с 800х600 на 640х480
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
kreator
✯ Ветеран ✯
Сообщения: 5159
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Создание "иконок" для отображения графических файлов

Сообщение kreator »

В библиотеке ClaRunExt есть функция ImageSaveThumbnail, которая (по описанию) уменьшает графический файл, в параметрах - процент уменьшения. Работает с файлом. Сам не использовал, поэтому может быть на выходе файл в формате PNG. Пользую функцию ImageRotateFlip из этого пакета, на выходе файл PNG несмотря на то, что на входе JPG, допустим. Вот так.
We are hard at work… for you. :)
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

Создание "иконок" для отображения графических файлов

Сообщение gopstop2007 »

хоть что-то, жаль что только в %
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Ал
✯ Ветеран ✯
Сообщения: 1038
Зарегистрирован: 08 Июль 2005, 6:48
Откуда: Россия
Поблагодарили: 1 раз

Создание "иконок" для отображения графических файлов

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

gopstop2007 писал(а):хоть что-то, жаль что только в %
ImageEx... позвоялет размер указать не в %

http://forum.clarionlife.net/phpbb/viewtopic.php?t=2293
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

Создание "иконок" для отображения графических файлов

Сообщение gopstop2007 »

Ал писал(а):ImageEx... позвоялет размер указать не в %
я знаю, выше написал, меня интересовало на самом кларионе, без внешних библиотек :)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
kreator
✯ Ветеран ✯
Сообщения: 5159
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Создание "иконок" для отображения графических файлов

Сообщение kreator »

А в чём проблема? Нужно чтобы все картинки преобразовывались в 640х480? Или с изменением отношения сторон?
We are hard at work… for you. :)
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

Создание "иконок" для отображения графических файлов

Сообщение gopstop2007 »

Рекурсия?! :D Сейчас меня админ убьет... http://forum.clarionlife.net/phpbb/post ... 04#pr24403
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Ал
✯ Ветеран ✯
Сообщения: 1038
Зарегистрирован: 08 Июль 2005, 6:48
Откуда: Россия
Поблагодарили: 1 раз

Создание "иконок" для отображения графических файлов

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

Что-то я нить потерял...
Что требуется-то сделать чиcтыми средствами клариона с картинкой?
1. при отображении из blob размер менять на окне? судя по хелпу с10 "How to Store and Display a Graphic Image with a Memo or Blob Data Type
":

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

  ?Image2{PROP:Width} = 92
  ?Image2{PROP:Height} = 88
2. Отображать, преобразовывать и сохранить в другой размер/тип?
Ответить