Reputation:
I can save image of a contact from address book in local database. But I can do it, when I make photo in camera in Windows Phone emulator in Visual Studio. When I add photo to a contact from different albums my app isn't start. This is my method of adding pictures in database. But it works for small size pictures. How I can do it for all size pictures?
foreach (var result in e.Results)
{
using (ContactsListDataContext db = new ContactsListDataContext(DBConnectionstring))
{
var stream = result.GetPicture();
if (stream != null)
{
BitmapImage _newPhoto = new BitmapImage();
_newPhoto.SetSource(stream);
MemoryStream _memoryStream = new MemoryStream();
WriteableBitmap _writingNewPhoto = new WriteableBitmap(_newPhoto);
_writingNewPhoto.SaveJpeg(_memoryStream, _writingNewPhoto.PixelWidth, _writingNewPhoto.PixelHeight, 0, 95);
byte[] _arrayForDB = _memoryStream.ToArray();
_memoryStream.Close();
var _newEmail = result.EmailAddresses.FirstOrDefault().EmailAddress;
var _newName = result.DisplayName;
db._contacts.InsertOnSubmit(new MyContactsList { Name = _newName, Email = _newEmail, ItemImage = _arrayForDB });
_listContactData.Add(new ContactsModel()
{
ContactName = result.DisplayName,
ContactEmail = result.EmailAddresses.FirstOrDefault().EmailAddress,
ContactImage = ByteArraytoBitmap(_arrayForDB)
});
db.SubmitChanges();
}
}
}
Upvotes: 0
Views: 185
Reputation: 1326
You can insert pictures directly to the database as BLOB , which allows 65535 bytes maximum. If you need more consider using a MEDIUMBLOB for 16777215 bytes or a LONGBLOB for 4294967295 bytes. See Storage Requirements for String Types for more information
Upvotes: 1