Как хранить изображения не использовать ресурсы - PullRequest
0 голосов
/ 19 июля 2011

У меня есть приложение на C #, и мне нужно держать на ней картинки, но я не могу использовать ресурсы (resx). Есть ли тогда альтернативный метод?

обновление: ОТВЕТ: Мои изображения статичны, для этого я буду использовать Embedded Resource

Как создать встроенный ресурс

Ответы [ 6 ]

2 голосов
/ 19 июля 2011

Как упомянуто выше, это действительно зависит от того, являются ли они статическими или динамическими.Если он статичен, вы можете использовать встроенный ресурс (вместо того, чтобы кодировать их как константы байтовых массивов, как уже упоминали другие).Если динамический, вы можете хранить их в изолированном хранилище.

1 голос
/ 19 июля 2011

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

0 голосов
/ 19 июля 2011

Я бы сказал, что вы можете сэкономить на диске, используя любую библиотеку Mono ZIP , которая обеспечивает безопасное шифрование.

Zip : потому что вы потенциально сэкономите место

Шифрование : если вам нужно сохранить личные данные (семейные изображения, документы ...)

Может группировать их на основе логики вашего собственного приложения или сохранять их по отдельности, а также прикреплять метафайл, если вам нужно также предоставить некоторую информацию об изображении.* использует этот тип "технологии", например, для DOCX файлов.Попробуйте изменить расширение файла DOCX на ZIP и разархивировать его в папку.Вы увидите содержание.

С уважением.

0 голосов
/ 19 июля 2011

Учитывая варианты, которые вы нам дали, это не оставляет нам много работы.В зависимости от размера изображения, вы можете использовать этот веб-сайт для кодирования ваших изображений в Base64, а затем сохранить их в string.Затем вы можете использовать System.Convert.FromBase64String для преобразования их из base64 обратно в байтовый массив.

Другим вариантом будет сохранение ваших изображений на веб-сервере и создание на сервере веб-службы, которую вы сможете использовать для полученияimages.

Это не очень хорошие методы.Первая идея потребляет гораздо больше памяти, чем нужно, а второй метод просто смешен, если подумать.Намного намного лучше использовать базу данных.Вы можете использовать базу данных, например MySQL , которая будет работать как с Windows, так и с Mono.Вы также можете использовать База данных SQLite , чтобы база данных была переносимой.На самом деле нет веской причины хранить это в базе данных.

0 голосов
/ 19 июля 2011

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

0 голосов
/ 19 июля 2011

Одна идея приходит в голову, но я, вероятно, не буду использовать ее, если это вообще возможно: вставлять изображения в код как массивы байтов.

Вы можете создать byte[] поля для изображений и инициализировать их в коде. Вы можете динамически генерировать код, используя либо CodeDOM, либо Reflection.Emit.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...