Vytvorenie formátu GIF   zodpovězená otázka

VB.NET, Algoritmy, Grafika

Dobrý deň. Neviete mi prosím niekto poradiť, akým spôsobom sa dá vytvoriť formát GIF napríklad z obrázkov uložených v ImageList ? Ďakujem za prípadné rady alebo linky.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud jde jenom o převod obrázku (uloženého do objektu drawing.image) a jeho uložení v GIFu, je možno použít následující (je to maximálně zjednodušené-jenom základní princip):

' do této proměnné si natáhneme potřebný exportní kodek
'(pro GIF, je možno ale pro libovolný jiný,
' který je v kolekci v systému k dispozici)
Dim Codecinfo As Drawing.Imaging.ImageCodecInfo = Nothing

' proměnná pro uložení obrázku pro konverzi
Dim obr As Drawing.Image

' projdeme všechny dostupné exportní formáty 
For Each Codecinfo In Imaging.ImageCodecInfo.GetImageEncoders
    ' a v případě nalezení kodeku pro GIF tento
    ' nechá v proměnné a ukončí procházení kodeky
    If Codecinfo.MimeType = "image/gif" Then Exit For
Next

' načteme zdrojový obrázek (proměnnou můžete naplnit ze zdroje
' dle libosti a dle potřeb Vaší aplikace (např. v cyklu
' z imagelistu
obr = Image.FromFile("d:\obr.jpg")

'obrázek uložíme s novým kodekem
obr.Save("d:\obr.gif", Codecinfo, Nothing)

Ve výše uvedeném příkladu jsou natvrdo veškeré názvy (pouze proilustraci funkčnosti).

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ještě pro úplnost (nebo pro zajímavost), snažil jsem se najít informace k parametrům pro jednotlivé kodeky (to poslední "Nothing" v metodě obr.save), a jejich popis jsem našel na http://msdn2.microsoft.com/en-us/library...

(pro Vás bohužel nic, protože GIF dle tohoto popisu žádný parametr neakceptuje).

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrý den,

jestli se nepletu, tak jste chtěl vytvořit animovaný gif?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Áno, ide mi o vytvorenie animovaného gifu z viacerých obrázkov. Nemôžem na túto tému nič nájsť a to už hľadám asi týždeň.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Omlouvám se, že jsem zdržoval, že jde o animovaný gif jsem z dotazu nepochopil.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Niet sa začo omlúvať. Ale ďakujem za snahu. Moja chyba, mal som hneď na začiatku napísať, že mi ide o animáciu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Abych napravil své pomýlení (:-)), nevím, jestli jste to studoval, ale tvorba anim gifů pod .net je probírána na http://www.codeproject.com/dotnet/NGif.a... (jenom je tam zdroják v c# - ale to by snad mělo jít překopat.

Nebo ještě něco jsem našel na http://forums.microsoft.com/MSDN/ShowPos... . Snad Vám to pomůže a bude tímto můj prohřešek odčiněn.

Pěkný den

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Omlouvám se, nebyl jsem přihlášen.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Ďakujem za linky. Myslím, že to je ono.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tato pomoc mi moc nepomohla, ale našel jsem na internetu kód ve visual basicu na stránce: http://msdn.microsoft.com/en-us/library/... , který by měl údajně vytvořit animovaný obrázek ve formátu GIF, ale kompilátor mi ohlásil, že nezná "GifBitmapencoder"

Dim width As Integer = 128
Dim height As Integer = width
Dim stride As Integer = CType(width / 8, Integer)
Dim pixels(height * stride) As Byte

' Define the image palette
Dim myPalette As BitmapPalette = BitmapPalettes.WebPalette

' Creates a new empty image with the pre-defined palette
Dim image As BitmapSource = System.Windows.Media.Imaging.BitmapSource.Create(width, height, 96, 96, PixelFormats.Indexed1, myPalette, pixels, stride)
Dim stream As New FileStream("new.gif", FileMode.Create)
Dim encoder As New GifBitmapEncoder()
Dim myTextBlock As New TextBlock()
myTextBlock.Text = "Codec Author is: " + encoder.CodecInfo.Author.ToString()
encoder.Frames.Add(BitmapFrame.Create(image))
encoder.Save(stream)

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback