Temat: Jakie są obsługiwane typy plików graficznych?

Prawdopodobnie są to: *.jpg;*.gif;*.png;*.bmp;*.tif
Ale jak wykryć, aby nie wpisywać tego do OpenFileDialog'u ?
Jak dodaje się obsługę nowego typu pliku i czy rejestruje się rozszerzenie aby potem móc odczytać wraz z listą wszystkich rozszerzeń?

Temat: Jakie są obsługiwane typy plików graficznych?

Może poniższy kod Ci się do czegoś przyda - lista wbudowanych kodeków i rozszerzeń plików:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing.Imaging;
using System.Reflection;

namespace ImageFormats
{
class Program
{
static void Main(string[] args)
{
PropertyInfo[] formats = typeof(ImageFormat).GetProperties(BindingFlags.Public | BindingFlags.Static);

Console.WriteLine("Lista obsługiwanych formatów:");
Console.WriteLine("------------------------------");
foreach (PropertyInfo format in formats)
{
Console.WriteLine(format.Name);
}

Console.WriteLine();
Console.WriteLine("Lista dostępnych kodeków:");
Console.WriteLine("------------------------------");
foreach (ImageCodecInfo ci in ImageCodecInfo.GetImageDecoders())
{
Console.WriteLine("Nazwa: " + ci.CodecName + ", DLL: " + ci.DllName + ", Rozszerzenie: " + ci.FilenameExtension);
}

Console.WriteLine();
Console.WriteLine("Lista rozszerzeń plików:");
Console.WriteLine("------------------------------");
foreach (ImageCodecInfo ci in ImageCodecInfo.GetImageDecoders())
{
foreach (string ext in ci.FilenameExtension.Split(';'))
{
Console.WriteLine(ext);
}
}

Console.ReadKey();
}
}
}


Zwraca:
Lista obsługiwanych formatów:
------------------------------
MemoryBmp
Bmp
Emf
Wmf
Gif
Jpeg
Png
Tiff
Exif
Icon

Lista dostępnych kodeków:
------------------------------
Nazwa: Built-in BMP Codec, DLL: , Rozszerzenie: *.BMP;*.DIB;*.RLE
Nazwa: Built-in JPEG Codec, DLL: , Rozszerzenie: *.JPG;*.JPEG;*.JPE;*.JFIF
Nazwa: Built-in GIF Codec, DLL: , Rozszerzenie: *.GIF
Nazwa: Built-in EMF Codec, DLL: , Rozszerzenie: *.EMF
Nazwa: Built-in WMF Codec, DLL: , Rozszerzenie: *.WMF
Nazwa: Built-in TIFF Codec, DLL: , Rozszerzenie: *.TIF;*.TIFF
Nazwa: Built-in PNG Codec, DLL: , Rozszerzenie: *.PNG
Nazwa: Built-in ICO Codec, DLL: , Rozszerzenie: *.ICO

Lista rozszerzeń plików:
------------------------------
*.BMP
*.DIB
*.RLE
*.JPG
*.JPEG
*.JPE
*.JFIF
*.GIF
*.EMF
*.WMF
*.TIF
*.TIFF
*.PNG
*.ICO


Możesz też tworzyć własne kodeki. Niestety, ponieważ ten temat mnie raczej nie interesuje, nie wgłębiam się dalej, tylko podaję przykładowy link: http://stackoverflow.com/questions/455018/extending-th...

Jest tam link prowadzący do artykułu w MSDN na temat WIC. Niestety, art. został przeniesiony tutajAdrian Olszewski edytował(a) ten post dnia 13.12.11 o godzinie 21:07

Temat: Jakie są obsługiwane typy plików graficznych?

Wielkie dzięki, działa.
Myślę nad obsługą PSD według http://www.codeproject.com/KB/graphics/simplepsd.aspx. Ta DLL nie obsługuje warstw, ale dobrze byłoby gdyby była taka funkcjonalność. Na razie zwraca jedną bitmapę typu systemowego IntPtr, która jest konwertowana na Bitmap
pictureBox1.Image = System.Drawing.Image.FromHbitmap(psd.GetHBitmap());
Mam nadzieję że tu nie następuje kopiowanie (bo bitmapa jest duża i może ich być dużo) a jedynie owinięcie systemowej bitmapy.
Warstwy, a może ich być np. 50 można przechowywać w oddzielnych bitmapach, obawiam się że może to oznaczać duże zużycie pamięci na obraz.
Obsługa kanału Alfa wg. http://msdn.microsoft.com/en-us/library/w177ax15.aspxAndrzej Borucki edytował(a) ten post dnia 14.12.11 o godzinie 23:14



Wyślij zaproszenie do