2012-04-04 3 views
0

Мне было интересно, может ли кто-нибудь направить меня или вести меня, чтобы использовать .gif-образ и преобразовать его в файл изображения полосы .bmp.Преобразование анимированного файла .gif в полосу .bmp

+0

Что такое полоса .bmp? Вы имеете в виду анимированный .gif, и вы хотите разделить фреймы на отдельные изображения? А потом сшить их вместе бок о бок? – Rup

+0

Класс GifBitmapEncoder? – ldgorman

+0

Да, я действительно хочу сшить их вместе, и я не знаю, как это сделать. – SpaceApple

ответ

-1

Загрузите .gif в растровое изображение и сохраните его в .bmp. Если вы хотите экспортировать фреймы .gif, я понятия не имею, как это сделать. Вы можете посмотреть на это www.eggheadcafe.com/articles/stripimagefromanimatedgif.asp, это, кажется, то, что вы ищете.

+0

Я рассмотрел этот пример раньше, и он не делал то, что я хотел, хотя этот пример разделяет каждый кадр с .gif на отдельные изображения, но я хочу, чтобы эти изображения были сшиты вместе в одно изображение. – SpaceApple

2

метод, что работает точно есть:

  1. Скачать инсталляционный Easy GIF Animator
  2. Открыть тур GIF с ним и экспортировать кадры в отдельные файлы
  3. Скачать и установить любую программу, которая может создать слои (например, Photoshop CS3 Little)
  4. Создайте новую ширину файла как свое изображение; Высота = Высота вашего рисунка. X количество фотографий
  5. Скопируйте каждый рисунок. как слои в ваш новый файл и перемещать их один за другим.
  6. Сохранить его как .png файл
  7. Скачать установить IPaQ 31x Image Explorer
  8. Открой .png в нем
  9. Сохранить это как ARGB файл (обычный BMP может не работать)
  10. Done !!

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

5

Во-первых, вам нужно получить размер gif. Затем вам нужно выяснить, сколько кадров есть.

После этого вам нужно создать новое изображение с Height = original height и Width = Frames * Gif Width.

Затем вы должны вставить оригинальные кадры Gif в полоску так: Frame N начинается с пикселя N * Ширина.

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


А вот полный код консольного приложения:

using System.Drawing; 
using System.Drawing.Imaging; 

foreach (var arg in args) 
    { 
     Image gif = Image.FromFile(arg); 
     FrameDimension dim = new FrameDimension(gif.FrameDimensionsList[0]); 
     int frames = gif.GetFrameCount(dim); 

     Bitmap resultingImage = new Bitmap(gif.Width * frames, gif.Height); 

     for (int i = 0; i < frames; i++) 
     { 
      gif.SelectActiveFrame(dim, i); 

      Rectangle destRegion = new Rectangle(gif.Width * i, 0, gif.Width, gif.Height); 
      Rectangle srcRegion = new Rectangle(0, 0, gif.Width, gif.Height); 

      using (Graphics grD = Graphics.FromImage(resultingImage)) 
      { 
       grD.DrawImage(gif, destRegion, srcRegion, GraphicsUnit.Pixel); 
      } 
     } 

     resultingImage.Save("res.png", ImageFormat.Png); 
    } 

Полученное изображение сохраняется в скомпилирован консоли приложения каталога двоичный файл под именем res.png. Вы можете заставить приложение сохранить результирующее изображение прямо там, где находится исходный файл, спросить, делать ли горизонтальную или вертикальную полосу и т. Д.

3

Создание полосы изображения можно легко сделать с помощью Photoshop (вы можете получить бесплатную пробную версию , или Элементы)

  1. Открытый.GIF - Photoshop будет открывать каждый кадр в качестве слоя
  2. Resize холст (высота GIF * слои) пикселей
  3. Удалить всю информацию кадра, сохранить слои
  4. Выберите последний слой, и переместить его в самый нижний
  5. Выберите все слои и нажмите «Распределить вертикальные центры». Теперь у вас есть прекрасно устроенная полоса.

Если вы используете Photoshop, вы можете просто экспортировать его как BMP. Это оно.