PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » PureBasic для Windows » GDI+ задержка анимации GIF


GDI+ задержка анимации GIF

Сообщений 1 страница 17 из 17

1

Помогите с кодом, пытаюсь сделать по примеру, пауза не устанавливается.

Код:
      #PropertyTagTypeSLONG = 9
      #PropertyTagFrameDelay = $5100
      #PropertyTagLoopCount = $5101
      #PropertyTagTypeShort = 3
      itm.PropertyItem
      itm\id=#PropertyTagFrameDelay
      itm\length=3*4
      itm\wtype=#PropertyTagTypeSLONG
      itm\value=?dlays
      GdipSetPropertyItem(gdipPlusImage, @itm)

...
DataSection
  dlays:
  Data.l 30,30,30,30
  iProperties:
  Data.w 9; cycles
EndDataSection

0

2

Разобрался. Перепутал порядок вызовов. Потом дизассемблировал прогу на Fb и сменил переменные, как сделано в другом порядке.

0

3

Столкнулся с неприятной особенностью - сохранение картинок с глубиной цвета 24/32 бита конвертирует в уродский Floyd-Steinberg dithering.
На FreeBasic конверсия происходит четко. Дополнительной информации не нашлось.
Решилось с помощью обходного пути - сохранить картинки с глубиной цвета 8бит(как раз хватает для картинок) и загрузить с помощью функций GDI+.

0

4

egons написал(а):

сохранение картинок с глубиной цвета 24/32 бита конвертирует в уродский Floyd-Steinberg dithering.

У GIF только 256 цветов (8 бит) и искажения цвета будут.

egons написал(а):

На FreeBasic конверсия происходит четко.

Сравните коды и найдите отличия.

0

5

Пётр написал(а):

Сравните коды и найдите отличия.

Уже. FreeBasic понимает всё, и результат - GIF-ка. Можно самому сравнить - скомпилировать исходник и посмотреть на результат.

0

6

Чтобы скомпилировать нужно иметь исходники.

0

7

ссылка в первом сообщении:
https://users.freebasic-portal.de/freeb … files.html

Я пробовал разные png с разной глубиной цвета и результат одинаковый - GIF без dither.

0

8

egons
Выложи код на FreeBasic, думаешь кому-то интересно поднимать мануалы... Чтобы люди посмотрели что функция вшитая и для неё нет последовательности WinAPI-функций, чтобы повторить подобное или модуль для конвертирования. Я тоже в курсе разных способов, бывает волной градации идут, бывает точки смешиваются мусором, бывает среднее, когда получаешь приемлемый результат, в контрастных переходах идёт смешение точек, в однотонных поверхностях берётся по возможности близкий цвет, чтобы не делать однотонную поверхность мусором. И умение выбирать цвета, которых больше, чтобы меньше делать мусор.

0

9

самая бомбезная вещь для ужимания цветов. но на жабаскрипте, который я не понимаю как конвертировать в PB, ибо не понимаю что именно там происходит :)
https://rilden.github.io/tiledpalettequant/

0

10

egons если правильно тебя понял, то
не все могут качественно сохранять png32 в gif, это известный факт, мой любимый редактор такое дерьмо сохраняет....
простое решение проблемы, написать функцию конвертирующую полупрозрачный пиксель в цвет, и сохраняй как гифку
гифка это 256 цветов из 16 лимонов, а не 256 фиксированных цветов, если это правильная гифка и правильный редактор

0

11

Я где то тут уже писал, gimp плохо определял цвета при индексации в 256. Но FastStone Image Viewer имеет неплохой преобразователь, слева панель в полноэкранном режиме. Там есть кнопка показать число цветов, я часто скриншоты окна стал задавать 64 цвета, так как они почти также выглядят, а уж потом применяю прогу сжатия. После этого в gif можно конвертировать без потери качества.

0

12

старая версия тут:
https://g0blinish.ucoz.ru/pb-emu/zx2picv3.zip
процедура doGIF(), код такой, что закачаешься

новая версия тут:
https://g0blinish.ucoz.ru/pb-emu/zx2picv3_1.zip

это конвертер картинок ZX Spectrum в изображения, например samples/totalmur2.scr можно преобразовать в GIF.

0

13

newJS написал(а):

egons если правильно тебя понял, то
не все могут качественно сохранять png32 в gif, это известный факт, мой любимый редактор такое дерьмо сохраняет....
простое решение проблемы, написать функцию конвертирующую полупрозрачный пиксель в цвет, и сохраняй как гифку
гифка это 256 цветов из 16 лимонов, а не 256 фиксированных цветов, если это правильная гифка и правильный редактор

да, правильно. Только вот разные библиотеки ведут себя по-разному. Кадры для GIF состоят из набора 16 цветов, поэтому перегнать в нужный формат несложно.

И еще один момент - в справке описано, что SaveImage сохраняет куртинку глубиной цвета 8 в png и bmp. Сохранение формата BMP не работает в версии 5.30 и 5.72.

0

14

SeregaZ написал(а):

самая бомбезная вещь для ужимания цветов. но на жабаскрипте, который я не понимаю как конвертировать в PB, ибо не понимаю что именно там происходит
https://rilden.github.io/tiledpalettequant/

color quantisation уже понаписано.

0

15

да фигня то что написано :) этот бомбезнее. особенно если использовать для конвертирования изображения на приставки. для меня просто взрыв мозга вызывает функционал разрезания на тайлы картинки и формирование 4 палитр по 15 цветов так, что эти самые тайлы 8х8 потом перерисовываются в одну из этих четырех палитр, наиболее близкую, а еще сверху если насыпать дизеринг, то вообще бомба!

Отредактировано SeregaZ (19.07.2025 01:28:51)

0

16

egons
В связи с обсуждением FreeBasic перепаквал русскую скачанную справку в чёрный стиль, вот.
А ещё чуть подредактировал тему FreeBasic в AkelPad, вот

0

17

AZJIO написал(а):

egons
В связи с обсуждением FreeBasic перепаквал русскую скачанную справку в чёрный стиль, вот.
А ещё чуть подредактировал тему FreeBasic в AkelPad, вот

Не хочу ввязываться в оффтоп и  флейм, но FB это не моё. Пришлось им воспользоваться, пушо "За неимением гербовой пишут на простой".

0


Вы здесь » PureBasic - форум » PureBasic для Windows » GDI+ задержка анимации GIF