[Solved] Как дать ссылку на PNG картинку в коде , добавив ее в проект? C# (Visual Studio 2012)


(Serhii) #1

Есть код , сравнивает 2 PNG картинки.

    Image img11 = Image.FromFile(@"C:\Pic\Etalon.png");
    Image img12 = Image.FromFile(@"C:\Pic\ForCompare.png");
    bool compare = Equality(img11, img12);

Как мне сослаться в коде на картинку которую я добавил в проект? Например я хочу брать Etalon.png из проекта и сравнивать с другой картинкой , которую я получаю скриншотом с веб-сайта и сохраняю локально на машину.


(Руслан) #2

а что вы собственно собираетесь сравнивать?


(Serhii) #3

эталонную картинку(Etalon.png я ее поместил в проект Visual Studio) с картинкой(скриншотом) который локально у меня на машине находиться(Image img12 = Image.FromFile(@"C:\Pic\ForCompare.png");)


(Artur Korobeynyk) #4

В С++ это будет выглядеть как-то так:

	HRSRC hRes;
	HGLOBAL hResourceLoaded; // хендлер картинки
	char * lpResLock;
	DWORD dwSizeRes;
	hRes = FindResource(NULL, MAKEINTRESOURCE(resourceID), "logo_image"); //resourceID это ИД рессурса, какой ему установила вижуал студия в файле рессурсов, "logo_image" - это тип рессурса, у меня был кастомный
	hResourceLoaded = LoadResource(NULL, hRes);
	lpResLock = (char *)LockResource(hResourceLoaded); // это будет бинарный код картинки
	dwSizeRes = SizeofResource(NULL, hRes); // это будет размер картинки в байтах

http://msdn.microsoft.com/en-us/library/windows/desktop/ms648042(v=vs.85).aspx
С# должен делать это абсолютно аналогично


(Дмитрий Жарий) #5

Есть разные варианты, я, например, копировал необходимые файлы в момент билда.

Еще, если из тестовых машин доступна отдельная сетевая шара, то можно просто копировать файлы в момент выполнения с удаленного сервера на локальный диск и там уже сравнивать.


(5am) #6

Доброго времени суток, эту проблему можно решить так:
например:
создаешь папку в проекте, добавляешь в нее файл, указываешь аннотацию у тестового класса (класс, который является базовым/родителем для ваших автотестов)
[DeploymentItem(@"DeployItems\my_file_png")]

см скрин, показал подробнее
в дальнейшем, при запуске теста, данный файл будет деплоится вместе с тестовой сборкой (если не ошибаюсь, в vs2012 путь указывается относительно солюшена, а не конкретного проекта - мой пример из vs 2010)
стрелкой указал, как потом добраться до этого файла.
+
у файла - надо указать "Copy to output directory" = copy always
в localtestsettings (файл будет находиться в корне солюшена - папка solution items), поставить галку Enable deployment в вкладке Deployment

http://msdn.microsoft.com/ru-ru/library/microsoft.visualstudio.testtools.common.deploymentitem.aspx


(Serhii) #7

Спасибо. Заработало.
Немного проще для Visual Studio 2012
1.В свойствах своего файла ставим "Copy to output directory" = copy always
2. сама путь на картинку img11 = Image.FromFile(@".\StandartLayouts\MainPageTest.png");