2014-12-02 4 views
0

На самом деле я разрабатываю «социальное» приложение для своего офиса, и мне интересно, как лучше всего загружать или управлять фотографиями. У каждого пользователя есть профильная фотография, и я хотел бы отображать ее везде, где захочу, на профиле, например, в списке контактов (немного меньше). Когда пользователь создает свой профиль, он берет снимок из библиотеки изображений на своем телефоне и отправляет серверу в качестве кодированной строки base64. Код, который я использовал, чтобы сохранить изображение на определена на сервере (сервер базы данных SQL 2012):Какой лучший способ управлять фотографиями WP 8.1

var reader = new DataReader(pictureStream.GetInputStreamAt(0)); 
byte[] bytes = new byte[pictureStream.Size]; 
await reader.LoadAsync((uint)pictureStream.Size); 
reader.ReadBytes(bytes); 
string bytesString = Convert.ToBase64String(bytes); 

Так вот bytesString содержит в формате base64 изображение для отправки на сервер. На самом деле у меня две проблемы.

Первая проблема:

В кодировке Base64 не могут быть вставлены в базу данных, даже если тип столбца VARCHAR (макс). Строка вырезается в таблице.

Вторая проблема:

Если я хочу, чтобы построить картину из bytesString декодирования строку base64, это занимает столько времени, что это не возможно работать, как это.

Так что мне интересно, как приложения такие Instagram или другое специализированное приложение для фотографий хорошо управляют фотографиями ... Кто-нибудь может дать мне несколько советов по управлению фотографиями через приложение? Заранее спасибо !

+0

Использование BitmapImage для сохранения фактического изображения –

ответ

0

Две идеи приходят на ум:

1. Хранить изображения в колонке двоичного типа

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

2. Храните изображения в файлах, а не в базе данных.

Другая вещь, которую вы можете сделать, это просто хранить изображения в файлах с именами, основанными на идентификаторы пользователей (т.е. user_15.png).

Другие соображения

Есть ли основания для кодирования/декодирования байтов? Отправка исходного изображения кажется мне лучшим вариантом.

Как вы действительно отправляете байты кодированного изображения? Из того, что я понимаю, varchar(max) должен иметь возможность хранить довольно много данных. Вы уверены, что сервер получает правильные данные?

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