2014-03-29 52 views
1

我想将图像保存到我的Azure MobileService。MobileService表格存储图片

我一直在环顾四周,发现你可以使用blob和azure存储。但是,如果你可以将图像转换为可存储在普通天蓝色移动服务表中的字符串或流,而不是执行此操作,我会很喜欢。

我创造我的应用程序图像为:

   Canvas found = null; 
       try 
       { 
        found = FindParentOfType<Canvas>(ViewInteractionCanvas.canvas); 
       } 
       catch (Exception) 
       { 
        //MessageBox.Show(e.Message.ToString(), "ERROR", MessageBoxButton.OK); 
        found = ViewInteractionCanvas.canvas; 
       } 
       WriteableBitmap writeableBitmap = new WriteableBitmap(found, null); 
       var imageBrush = new ImageBrush 
       { 
        ImageSource = writeableBitmap, 
        Stretch = Stretch.None 
       }; 
       writeableBitmap = null; 
       GC.Collect(); 

       try 
       { 
        FindChildCanvas(found, imageBrush); 
       } 
       catch (Exception e) 
       { 
        MessageBox.Show(e.Message.ToString(), AppResources.ErrorSaving, MessageBoxButton.OK); 
        return false; 
       } 
       var fileStream = new MemoryStream(); 
       writeableBitmap = new WriteableBitmap(found, null); 
       writeableBitmap.SaveJpeg(fileStream, writeableBitmap.PixelWidth, writeableBitmap.PixelHeight, 100, 100); 
       fileStream.Seek(0, SeekOrigin.Begin); 

       string tempJPEG = "My.jpg"; 
       using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication()) 
       { 
        if (myIsolatedStorage.FileExists(tempJPEG)) 
        { 
         myIsolatedStorage.DeleteFile(tempJPEG); 
        } 
        IsolatedStorageFileStream IsofileStream = myIsolatedStorage.CreateFile(tempJPEG); 
        /* 
        StreamResourceInfo sri = null; 
        Uri uri = new Uri(tempJPEG, UriKind.Relative); 
        sri = Application.GetResourceStream(uri); 

        BitmapImage bitmap = new BitmapImage(); 
        bitmap.SetSource(sri.Stream); 
        WriteableBitmap wb = new WriteableBitmap(bitmap); 
        */ 
        // Encode WriteableBitmap object to a JPEG stream. 
        //Extensions.SaveJpeg(wb, IsofileStream, wb.PixelWidth, wb.PixelHeight, 0, 85); 

        writeableBitmap.SaveJpeg(IsofileStream, writeableBitmap.PixelWidth, writeableBitmap.PixelHeight, 100, 100); 
        IsofileStream.Close(); 
       } 
       dialogResult = MessageBox.Show(AppResources.ShieldCreator_SaveShield, AppResources.ShieldCreator_SaveShieldTitle, MessageBoxButton.OKCancel); 
       if (dialogResult == MessageBoxResult.OK) 
       { 

        MediaLibrary library = new MediaLibrary(); 
        library.SavePictureToCameraRoll("picture", fileStream); 

       } 
       if (dialogResult == MessageBoxResult.Cancel) 
       { 
       } 
       fileStream.Close(); 

我在想,我可以把文件流或类似的东西?但是没有成功。也许这完全不可能。但只是想调查的可能性,而不是开始学习一个新的概念。

希望有人能帮助。

回答

2

默认情况下,移动服务数据由SQL数据库支持。只要你能找到一种方法在你的表中创建适当的数据类型,你就可以做到这一点。请记住:SQL数据库数据库被限制为150GB,如果将数据库实例中的内容存储在数据库实例中,比如存储在您的SQL表中的blob存储的blob存储容量更快(这也会大大降低比SQL数据库服务)。

+0

谢谢,Blob存储就是这样。但我有点不确定如何做到这一点。除了http://www.windowsazure.com/en-us/documentation/articles/mobile-services-windows-store-dotnet-upload-data-blob-storage/以外,您是否还有其他有用的信息。 – JTIM

1

你在说什么(将图像数据存储在你的SQL数据库中)是可能的,并不是很难,但绝对不推荐。存在几个问题,包括数据的大小以及像这样存储数据的低效率。在一天结束的时候不过,如果这就是你要实现它,我的帖子解释了如何从一个Android和iOS应用:

由于移动服务支持的数据类型,您需要将图像数据存储为字符串(数据库中的变量)。再次,远离最有效的,但它会工作。

+0

谢谢你的帮助。然后我将不得不考虑blob存储。我发现这个链接:http://www.windowsazure.com/en-us/documentation/articles/mobile-services-windows-store-dotnet-upload-data-blob-storage/你知道任何其他的帮助,只是让我拥有所有相关信息。 – JTIM