Czy istnieje szybki sposób na powiązanie obiektu ImageFormat z konkretnym rozszerzeniem pliku? Szukam więcej niż porównań ciągów dla każdego formatu.Pobierz ImageFormat z rozszerzenia pliku
Odpowiedz
Oto niektóre stary kod znalazłem, że powinno załatwić sprawę:
string InputSource = "mypic.png";
System.Drawing.Image imgInput = System.Drawing.Image.FromFile(InputSource);
Graphics gInput = Graphics.fromimage(imgInput);
Imaging.ImageFormat thisFormat = imgInput.RawFormat;
Wymaga to rzeczywiście otwarcie i testowanie obrazu - rozszerzenie pliku jest ignorowana . Zakładając, że i tak otwierasz plik, jest to o wiele bardziej niezawodne niż zaufanie do rozszerzenia pliku.
Jeśli nie otwierasz plików, nie ma nic "szybszego" (w sensie wydajności) niż porównanie ciągów - z pewnością nie wywołanie w systemie operacyjnym, aby uzyskać mapowania rozszerzeń plików.
patrz artykuł CodeProject na Skojarzenia plików http://www.codeproject.com/KB/dotnet/System_File_Association.aspx
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();
}
}
Jest to lepsza opcja, jeśli otwarcie pliku nie jest możliwe. Na przykład ładowanie bardzo dużego obrazu może spowodować wyjątek "OutOfMemory". To nie jest tak solidne, zrobi dla wielu przypadków użycia. – TEK
private static ImageFormat GetImageFormat(string format)
{
ImageFormat imageFormat = null;
try
{
var imageFormatConverter = new ImageFormatConverter();
imageFormat = (ImageFormat)imageFormatConverter.ConvertFromString(format);
}
catch (Exception)
{
throw;
}
return imageFormat;
}
Nie rozumiem, dlaczego jest to przegłosowane! imageFormatConverter.ConvertFromString jest dziedziczony z TypeConverter i zawsze zwraca wartość null lub generuje wyjątek NotSupportedException! [zobacz tę] (https://stackoverflow.com/a/3594313/2803565) –
- 1. SPLFileInfo: pobierz nazwę pliku bez rozszerzenia
- 2. Pobierz nazwę pliku bez rozszerzenia z pełnej ścieżki
- 3. Android - pobierz typ MIME z pliku bez rozszerzenia
- 4. Tworzenie rozszerzenia Chrome pobierz plik
- 5. Pobierz ikonę dla danego rozszerzenia
- 6. Pobierz główny pakiet aplikacji z rozszerzenia
- 7. Pobierz wersję rozszerzenia w php
- 8. Pobierz nazwę pliku z QFile?
- 9. nazwa pliku bez rozszerzenia
- 10. Pobierz aktualny adres URL strony z rozszerzenia paska bocznego firefox
- 11. Plik wideo z Androidem wewnątrz pliku rozszerzenia
- 12. Uzyskaj dużą ikonę z rozszerzenia pliku
- 13. REGEX: Przechwyć nazwę pliku z adresu URL bez rozszerzenia pliku
- 14. Przykład opóźnionego rozszerzenia pliku wsadowego
- 15. Pobierz okno dialogowe pliku
- 16. Node.js pobierz rozszerzenie pliku
- 17. C# Regex dla rozszerzenia pliku
- 18. Delphi Pobierz lokalizację pliku
- 19. plik rozszerzenia apk nie pobiera z playstore
- 20. Pobierz postęp w pliku Node.js z żądaniem
- 21. Pobierz obiekt java.nio.file.Path z pliku java.io.File
- 22. wpf - Pobierz wartości z pliku konfiguracyjnego aplikacji
- 23. Pobierz wersję java z pliku wsadowego
- 24. Android- Pobierz tekst z pliku PDF
- 25. Pobierz najnowszą wersję pliku z TFS
- 26. Pobierz pliki binarne z Javascriptem
- 27. Node.js - System plików pobierz typ pliku
- 28. Pobierz nazwę pliku ze wskaźnika pliku
- 29. Pobierz wersję pliku w PowerShell
- 30. myBitmap.RawFormat to coś innego niż jakikolwiek znany program ImageFormat?
Dlaczego musisz linię 'Graphics gInput = Graphics.FromImage (imgInput);'? 'gInput' nie jest w ogóle używany. –
Może, chciał umieścić to wszystko w Try-Catch i sprawdzić, czy to działa. – RealityDysfunction
To raczej bezużyteczny scenariusz "zapisz jako ...". – Nyerguds