Mi ensamblaje incluye una imagen con BuildAction == Resource. Quiero obtener una BitmapImage desde este recurso incrustado.¿Cómo puedo obtener una imagen de mapa de bits de un recurso?
puedo cargar un archivo BitmapImage de la siguiente manera:
var bitmap = new BitmapImage(new Uri(path));
Pero, ¿cómo puedo crear un URI que se referirá a una imagen recurso incrustado?
Cuando intento y crear una (por ejemplo pack://application:,,,/MyImage.png
o pack://application:,,,/MyAssembly;component/MyImage.png
), se produce una excepción 'pack URI':
System.UriFormatException "URI no válido: se esperaba un puerto debido a que hay dos puntos (':') presente pero el puerto no pudo ser analizado. "
he encontrado la solución, a la UriFormatException en este blog post
Sin embargo, con ese corrección aplicada, todavía consigo excepciones tratando de cargar un BitmapImage de un paquete URI.
Al usar el formato pack://application:,,,/Image.png
, obtengo una NullReferenceException, y cuando utilizo el formato pack://application:,,,/AssemblyName;component/Image.png
, recibo una excepción NotSupportedException "No se reconoce el prefijo Uri".
Resumen Mi problema era que yo estaba tratando de usar un 'paquete de URI' en un proceso antes de que se había creado una instancia ningún control WPF/ventana/etc, por lo que el esquema de 'pack' URI no estaba todavía registrado (otras "cosas" requeridas por WPF tampoco deben configurarse, porque el registro manual del esquema de paquete no soluciona el problema). La solución fue esperar hasta después de instanciar mi usercontrol de WPF para usar los URI del paquete.
Gracias por su resumen del problema. Tengo el mismo problema y trataré de solucionarlo como sugieres. – Oskar
posible duplicado de [Cargando BitmapImage en el código] (http://stackoverflow.com/questions/801833/loading-bitmapimage-in-code) –