Как создать GIF (который выглядит более естественно) с помощью смешивания видеокадров или массива изображений UI?

#ios #swift #objective-c #core-image #dithering

Вопрос:

Вот ссылка (https://imgplay.zendesk.com/hc/en-us/articles/360029411991-What-is-GIF-Dithering-Option-) где написано When you save the file as GIF with dithering, it can make your GIF more natural.

Как реализовать Dithering создание более естественного GIF из изображений UI или видеокадров с помощью Objective-C или Swift?

Комментарии:

1. Попробуйте поискать что-нибудь об алгоритме сглаживания Флойда Стейнберга en.wikipedia.org/wiki/Floyd–Steinberg_dithering

2. Я нашел этот алгоритм. Но не удалось реализовать в swift /objective-C

Ответ №1:

Предполагая, что ваше исходное изображение имеет 8 бит на канал RGB, вы можете использовать vImage. В vImage нет a vImageConvert_RGB88toIndexed8 , но вы можете разделить свое перемеженное изображение на три 8-битных плоских буфера для RGB. Я точно не знаю, насколько хорошо это сработает, но вы можете преобразовать два из трех каналов в Indexed2 with vImageConvert_Planar8toIndexed2 , а другой канал-в Indexed4 with vImageConvert_Planar8toIndexed4 . Это даст вам необходимую 8-разрядную таблицу поиска.

У Apple здесь есть множество примеров проектов с ускоренным кодом. Оптимизация производительности обработки изображений обсуждает преобразование чередующихся изображений в плоский формат. Если у вас есть известная палитра, применение цветовых преобразований к изображениям с помощью Многомерной таблицы поиска может быть решением для квантования вашего изображения до 256 цветов.

Комментарии:

1. Я новичок в viImage. Даже я ничего не делал с vImage. можете ли вы привести пример? Как разделить изображение на 3-битные буферы планировщика и как играть с другими функциями, которые вы предоставили? Спасибо за ваше время и ценные рекомендации. @саймон-гладман

2. Привет @sagarthecoder, я добавил ссылки на документы Apple в свой ответ.

3. vImageConvert_Planar8toIndexed2(argbSourcePlanarBuffers[1], argbDestinationPlanarBuffers[1], kvImageGetTempBufferSize, lookUpTable, kvImageConvert_DitherFloydSteinberg, kvImageNoFlags) это всегда видно Type of expression is ambiguous without more context

4. Вам нужно будет добавить дополнительную информацию — какие типы ваших параметров? Вы смотрели документы ( developer.apple.com/documentation/accelerate/… )?

5. …возможно, вы захотите создать новый пост с тегом [vimage].