Создание Gif с переходами изображений с помощью c #, ASP.net

#c# #asp.net #animated-gif #.net-ngif

#c# #asp.net #анимированный-gif #.net-ngif

Вопрос:

У меня есть требование, когда у меня много изображений, и мне нужно создать слайд-шоу с различными переходами изображений, и я должен иметь возможность сохранить его в виде GIF-файла вместе с переходами изображений.

Я могу создавать различные переходы между изображениями на C #, но еще не выяснил, как сохранить его в формате gif. Существует компонент ngIf, который позволяет создавать gif с несколькими изображениями. Я пытался сохранять изображение при каждом переходе, а затем создавать gif из всех этих изображений, но он не показывает эффект переноса, а показывает только изображение, которое будет показано следующим на другом уровне перехода с черным фоном.

Есть ли способ создать gif с эффектами перехода между изображениями?

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

1. Как вы рисуете слайд-шоу? Вам также нужно будет сохранить промежуточные изображения.

2. Я сохраняю промежуточные изображения, но они с черным фоном, а не с предыдущими изображениями

3. Покажите нам код. Похоже, что при отображении вы полагаетесь на рисование поверх предыдущего изображения, однако, когда вы сохраняете изображение, этого предыдущего изображения там нет (и вместо этого вы получаете черный).

4. Было бы сложно опубликовать здесь код. Могу ли я отправить его на ваш адрес электронной почты.

Ответ №1:

Я бы стремился к библиотеке, которая создает анимированный GIF. Для удобства использования он должен быть либо .NET, либо COM. Возможно, что-то вроде этого проекта в CodeProject.

Ответ №2:

GIF не поддерживает прозрачность с альфа-каналом. Поддерживается только полная прозрачность (не уровень непрозрачности, как в альфа-канале). Вам нужно назначить элемент палитры в качестве прозрачного цвета, а затем использовать этот элемент палитры там, где требуется прозрачность (GIF всегда сохраняется с палитрой).

В анимированном GIF следующее изображение накладывается на предыдущее, поэтому прозрачные области отображают предыдущее изображение.

В качестве альтернативы, вы могли бы просто отобразить все новое изображение и не полагаться на прозрачность.