Obter ImageFormat de extensão de arquivo

votos
22

Existe maneira rápida para obter o objeto ImageFormat associada a uma extensão de arquivo particular? Eu estou procurando mais rápido do que comparações de cadeia para cada formato.

Publicado 26/08/2009 em 22:58
fonte usuário
Em outras línguas...                            


4 respostas

votos
30

Aqui está algum código antigo eu achei que deve fazer o truque:

 string InputSource = "mypic.png";
 System.Drawing.Image imgInput = System.Drawing.Image.FromFile(InputSource);
 Graphics gInput = Graphics.fromimage(imgInput);
 Imaging.ImageFormat thisFormat = imgInput.RawFormat;

Isso requer realmente abrir e testar a imagem - a extensão do arquivo é ignorado. Supondo que você está abrindo o arquivo de qualquer maneira, isso é muito mais robusto do que confiar em uma extensão de arquivo.

Se você não está abrindo os arquivos, não há nada "mais rápido" (no sentido de desempenho) do que uma comparação de cadeia - certamente não comparecendo no OS para obter mapeamentos de extensão de arquivo.

Respondeu 26/08/2009 em 23:04
fonte usuário

votos
26
private static ImageFormat GetImageFormat(string fileName)
{
    string extension = Path.GetExtension(fileName);
    if (string.IsNullOrEmpty(extension))
        throw new ArgumentException(
            string.Format("Unable to determine file extension for fileName: {0}", fileName));

    switch (extension.ToLower())
    {
        case @".bmp":
            return ImageFormat.Bmp;

        case @".gif":
            return ImageFormat.Gif;

        case @".ico":
            return ImageFormat.Icon;

        case @".jpg":
        case @".jpeg":
            return ImageFormat.Jpeg;

        case @".png":
            return ImageFormat.Png;

        case @".tif":
        case @".tiff":
            return ImageFormat.Tiff;

        case @".wmf":
            return ImageFormat.Wmf;

        default:
            throw new NotImplementedException();
    }
}
Respondeu 23/11/2012 em 06:30
fonte usuário

votos
5
    private static ImageFormat GetImageFormat(string format)
    {
        ImageFormat imageFormat = null;

        try
        {
            var imageFormatConverter = new ImageFormatConverter();
            imageFormat = (ImageFormat)imageFormatConverter.ConvertFromString(format);
        }
        catch (Exception)
        {

            throw;
        }

        return imageFormat;
    }
Respondeu 10/11/2014 em 14:32
fonte usuário

votos
1

consulte o artigo CodeProject em associações de arquivos http://www.codeproject.com/KB/dotnet/System_File_Association.aspx

Respondeu 26/08/2009 em 23:02
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more