В C#, возможно, это ошибка Image.SaveAdd, кто может помочь мне ее решить?C#

Место общения программистов C#
Ответить
Anonymous
 В C#, возможно, это ошибка Image.SaveAdd, кто может помочь мне ее решить?

Сообщение Anonymous »

Я пытаюсь объединить два разных файла gif в один файл.

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

Я сохранил первый gif и установил значение FrameDelay, код, как показано ниже. :

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

    ImageCodecInfo codeInfo = GetEncoder(ImageFormat.Gif);
System.Drawing.Imaging.Encoder saveEncoder = System.Drawing.Imaging.Encoder.SaveFlag;
EncoderParameters parameters = new EncoderParameters(1);

parameters.Param[0] = new EncoderParameter(saveEncoder, (long)EncoderValue.MultiFrame);
PropertyItem PropertyTagFrameDelay = img1.GetPropertyItem(0x5100);
PropertyTagFrameDelay.Value = new byte[] { 0x96, 0x00 };// this is the delay value 0x0096, means 1.5 second
img1.SetPropertyItem(PropertyTagFrameDelay);

PropertyItem LoopCount = img1.GetPropertyItem(0x5101);
LoopCount.Value = new byte[] { 0x00, 0x00 };// this means the gif loops endlessly
img1.SetPropertyItem(LoopCount);

img1.Save(@"c:\ddd.gif", codeInfo, parameters);
Затем я попытался добавить еще одно изображение в качестве второго кадра.

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

    parameters = new EncoderParameters(1);
parameters.Param[0] = new EncoderParameter(saveEncoder, (long)EncoderValue.FrameDimensionTime);
PropertyTagFrameDelay = img2.GetPropertyItem(0x5100);
PropertyTagFrameDelay.Value = new byte[] { 0x96, 0x00 };// this is the delay value 0x0096, means 1.5 second
img2.SetPropertyItem(PropertyTagFrameDelay);
И наконец, мне следует удалить это изображение.

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

parameters = new EncoderParameters(1);
parameters.Param[0] = new EncoderParameter(saveEncoder, (long)EncoderValue.Flush);
img1.SaveAdd(parameters);
И я обнаружил, что время задержки второго кадра всегда равно 0.

Я пробовал много методов, но я понятия не имею, как сделать его 0x96.

Так что же в этом плохого?

Подробнее здесь: https://stackoverflow.com/questions/178 ... o-solve-it
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»