У меня есть изображение в моем проекте, хранящемся в Resources/myimage.jpg. Как я могу динамически загружать это изображение в объект Bitmap?Загрузить изображение из области ресурсов проекта в C#
ответ
Используете ли вы Windows Forms? Если вы добавили изображение с помощью свойств/ресурсов UI, вы получаете доступ к изображению с сгенерированного кода, так что вы можете просто сделать это:
var bmp = new Bitmap(WindowsFormsApplication1.Properties.Resources.myimage);
Нет, он добавляется как простой файл в папку Ресурсы. –
А, ок. В этом случае я думаю, что @ Hallgrim получил ответ для вас, используя потоки ресурсов. Если вы * используете * Windows Forms, я бы настоятельно рекомендовал вам удалить изображение и повторно добавить его из пользовательского интерфейса - гораздо проще. –
Вы можете получить ссылку на изображение следующим образом:
Image myImage = Resources.myImage;
Если вы хотите сделать копию изображения, вам нужно сделать следующее:
Bitmap bmp = new Bitmap(Resources.myImage);
не забудьте утилизировать bmp, когда вы закончите с этим. Если вы не знаете имя образа ресурса во время компиляции, вы можете использовать менеджер ресурсов:
ResourceManager rm = Resources.ResourceManager;
Bitmap myImage = (Bitmap)rm.GetObject("myImage");
Преимущество ResourceManager является то, что вы можете использовать его там, где Resources.myImage обычно находиться вне объема или где вы хотите динамически получать доступ к ресурсам. Кроме того, это работает для звуков, конфигурационных файлов и т. Д.
Вам необходимо загрузить его из потока ресурсов.
Bitmap bmp = new Bitmap(
System.Reflection.Assembly.GetEntryAssembly().
GetManifestResourceStream("MyProject.Resources.myimage.png"));
Если вы хотите знать все имена ресурсов в сборке, идти с:
string[] all = System.Reflection.Assembly.GetEntryAssembly().
GetManifestResourceNames();
foreach (string one in all) {
MessageBox.Show(one);
}
Вам не нужно использовать отражение - это кажется чрезмерно сложным, учитывая более простые доступные методы. –
Это решение не работает на C#/Windows Phone. NETCF --GetManifestResourceNames() возвращает только одно имя - модуль сборки DLL. В манифесте есть только один ресурс - поток blob модуля DLL. Без C++ и небезопасного кода, позволяющего вызывать вызовы API Win32, откровенно королевская боль в заднице работает с этим куском памяти. –
Вы также можете использовать 'typeof (this) .Assembly' для краткости. –
Лучше всего, чтобы добавить их в качестве изображения ресурсов в настройках ресурсов в проекте. Затем вы можете получить изображение напрямую, выполнив Resource.myimage. Это позволит получить изображение через сгенерированное свойство C#.
Если вы просто установить изображение как Внедренный ресурс вы можете получить его с:
string name = "Resources.myimage.jpg"
string namespaceName = "MyCompany.MyNamespace";
string resource = namespaceName + "." + name;
Type type = typeof(MyCompany.MyNamespace.MyTypeFromSameAssemblyAsResource);
Bitmap image = new Bitmap(type.Assembly.GetManifestResourceStream(resource));
Где MyTypeFromSameAssemblyAsResource любого типа, что у вас есть в сборке.
Что такое 'type'? – radbyx
«namespace» не может использоваться как имя переменной и как вы попадаете в MyTypeFromSameAssemblyAsResource. –
исправлено опечатка, адресованная проблеме Джейсона –
С и ImageBox под названием «ImagePreview FormStrings.MyImageNames содержит/набор строк метод произнесения регулярные ГЭТ, которые связаны со списком типа scrollbox. Изображения имеют те же имена, что и связанных имен в списке, за исключением . в .bmp окончаний Все растровые изображения втянута в Resources.resx достаточно
Object rm = Properties.Resources.ResourceManager.GetObject(FormStrings.MyImageNames);
Bitmap myImage = (Bitmap)rm;
ImagePreview.Image = myImage;
как ни странно, из тыкать в конструкторе я считаю, что, кажется, гораздо более простой подход:
изображение, кажется, Доступно из .Properties.Resources.
Я просто использую изображение, поскольку все, что меня интересует, вставляет его в элемент управления с изображением на нем.
(Net 4.0, VS2010.)
путь легче, чем большинство все из предложенных ответов
tslMode.Image = global::ProjectName.Properties.Resources.ImageName;
В моем случае - я использую иконки в моем ресурсе, но мне нужно, чтобы добавить их динамически изображений некоторых ToolStripMenuItem
(ы). Таким образом, в методе, который я создал (откуда и происходит фрагмент кода ниже), мне пришлось преобразовать ресурсы значков в растровые изображения, прежде чем я смогу вернуть их для добавления в мой MenuItem
.
string imageName = myImageNameStr;
imageName = imageName.Replace(" ", "_");
Icon myIcon = (Icon)Resources.ResourceManager.GetObject(imageName);
return myIcon.ToBitmap();
Что-то еще, чтобы быть в курсе, если изображение/значок имеет пробелы (»«) в его имени, когда вы добавляете их в свой ресурс, VS автоматически заменить эти пробелы с „_“ (с). Потому что пробелы не являются допустимым символом при именовании вашего ресурса. Вот почему я использую метод Replace()
в моем ссылочном коде. Вероятно, вы просто проигнорируете эту строку.
код я использую в некоторых из моих проектов ... Это предполагает, что вы храните изображения в ресурс только в виде растровых изображений не иконки
public static Bitmap GetImageByName(string imageName)
{
System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly();
string resourceName = asm.GetName().Name + ".Properties.Resources";
var rm = new System.Resources.ResourceManager(resourceName, asm);
return (Bitmap)rm.GetObject(imageName);
}
Это очень приятно. Спасибо :) – Derrick
я предлагаю:
System.Reflection.Assembly thisExe;
thisExe = System.Reflection.Assembly.GetExecutingAssembly();
System.IO.Stream file =
thisExe.GetManifestResourceStream("AssemblyName.ImageFile.jpg");
Image yourImage = Image.FromStream(file);
Из MSDN: http://msdn.microsoft.com/en-us/library/aa287676(v=vs.71).aspx
Использование Image.FromStream лучше, потому что вам не нужно знать формат изображения (bmp, png, ...).
Я посмотрел на код дизайнера одного из моих проектов, и заметил, что использовал это обозначение
myButton.Image = global::MyProjectName.Properties.Resources.max;
где Макс имя ресурса я закачанный в проект.
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
this.toolStrip1.Name = "toolStrip1";
this.toolStrip1.Size = new System.Drawing.Size(444, 25);
this.toolStrip1.TabIndex = 0;
this.toolStrip1.Text = "toolStrip1";
object O = global::WindowsFormsApplication1.Properties.Resources.ResourceManager.GetObject("best_robust_ghost");
ToolStripButton btn = new ToolStripButton("m1");
btn.DisplayStyle = ToolStripItemDisplayStyle.Image;
btn.Image = (Image)O;
this.toolStrip1.Items.Add(btn);
Или вы могли бы использовать эту линию при работе с WPF или Silverlight, особенно там, где у вас есть строка источника уже в XAML разметке:
(ImageSource)new ImageSourceConverter().ConvertFromString(ImagePath);
Если ImagePath что-то вроде:
string ImagePath = "/ProjectName;component/Resource/ImageName.png";
Ответ JDS работал лучше всего. C# пример загрузки изображения:
- Включить изображение в качестве ресурса (Project tree-> Ресурсы, щелкните правой кнопкой мыши, чтобы добавить желаемый ImageName.png файл)
- Embedded Resource (Project tree-> Resources-> ImageName.png , щелкните правой кнопкой мыши выберите свойства)
- .png формат файла (.bmp .jpg должно быть OK)
pictureBox1.Image = ProjectName.Properties.Resources.ImageName;
Обратите внимание на следующее:
- Файл образа ресурса - «ImageName.png», расширение файла должно быть опущено.
- Имя проекта может быть более адекватно понято как «Имя сборки», которое должно быть соответствующим текстовым вводом на странице «Проект-> Свойства».
Пример строки кода успешно выполняется с использованием сообщества VisualStudio 2015.
Вы можете также сохранить в BMP вар, как это:
var bmp = Resources.ImageName;
надеюсь, что это помогает!
- 1. Получить изображение из ресурсов проекта
- 2. Как извлечь изображение из папки ресурсов проекта в C#
- 3. Как получить изображение из ресурсов проекта
- 4. как загрузить изображение из вложенной папки ресурсов
- 5. загрузить изображение из папки проекта в Java
- 6. Как загрузить изображение из внедренных ресурсов
- 7. JavaFX - Невозможно загрузить изображение из проекта
- 8. Загрузить изображение из папки внутри проекта
- 9. Загрузить изображение из файла внутри папки проекта
- 10. Загрузить растровое изображение из файла ресурсов на изображение
- 11. Как загрузить изображение из файла ресурсов в vb 2010 expresss?
- 12. Получение ресурсов проекта Xcode в C++
- 13. Прочитать файл ресурсов из проекта C# в ResXResourceReader
- 14. Как загрузить изображение в папку ресурсов?
- 15. Загрузить XML из ресурсов
- 16. Как извлечь изображение из ресурсов?
- 17. Компиляция ресурсов для проекта C#
- 18. Как загрузить изображение из ресурсов данных в eclipse java
- 19. Как загрузить изображения из ресурсов
- 20. Получить изображение из ресурсов
- 21. C# Interop.Word Добавление изображения из папки ресурсов проекта
- 22. Получить фоновое изображение из ресурсов
- 23. Загрузить изображение из HTML создает черные области на картинке
- 24. Загрузить изображение из URL-адреса в C++
- 25. Загрузка пакета ресурсов из другого проекта java
- 26. C# Загрузить настройки приложения из другого проекта?
- 27. Как загрузить DLL из основного проекта C++
- 28. Удаление проекта из рабочей области
- 29. C# Получить источник изображения из ресурсов проекта создает утечку памяти
- 30. Как загрузить изображение из папки ресурсов/изображений весной mvc?
Посмотрите на этот ответ: http://stackoverflow.com/questions/94456/load-a-wpf-bitmapimage-from-a-system-drawing-bitmap/7375570#7375570 – Roland
Это был вопрос это было задано позже, но связано, если не дубликат: http://stackoverflow.com/questions/13592150/load-image-from-resources – vapcguy