Пример #1
0
        public async Task <string> GetThumbnail(IRandomAccessStream stream, string filename, int width = 250, int height = 250)
        {
            byte[] thumbnailData = null;
            var    success       = false;

            while (!success)
            {
                try
                {
                    thumbnailData = await _client.GetThumbnailAsync(stream.AsStream(), width, height);

                    success = true;
                }
                catch (Exception ex)
                {
                    // wait out the limitation in the API
                    await Task.Delay(TimeSpan.FromSeconds(60));
                }
            }
            var file = await(await AdventureObjectStorageHelper.GetDataSaveFolder()).CreateFileAsync(filename, CreationCollisionOption.GenerateUniqueName);

            using (var writeStream = await file.OpenAsync(FileAccessMode.ReadWrite))
            {
                await writeStream.WriteAsync(thumbnailData.AsBuffer());
            }

            return(file.Path);
        }
Пример #2
0
        private async Task <MyData> LoadDummyData()
        {
            var file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Data/data.json"));

            await file.CopyAsync(await AdventureObjectStorageHelper.GetDataSaveFolder(), _filename, NameCollisionOption.ReplaceExisting);

            var data = await _localStorageService.ReadFileAsync <MyData>(_filename);

            return(data);
        }
Пример #3
0
        public async static Task <string> SaveInkToFile(this InkCanvas inker, string filename)
        {
            if (inker == null || inker.InkPresenter.StrokeContainer.GetStrokes().Count == 0)
            {
                return(null);
            }

            var file = await(await AdventureObjectStorageHelper.GetDataSaveFolder()).CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting);

            if (file == null)
            {
                return(null);
            }

            using (var outputStream = await file.OpenAsync(FileAccessMode.ReadWrite))
            {
                await inker.InkPresenter.StrokeContainer.SaveAsync(outputStream);
            }

            return(file.Path);
        }
Пример #4
0
        public static async Task <string> RenderImageWithInkToFileAsync(InkCanvas inker, IRandomAccessStream imageStream, string filename)
        {
            if (inker.InkPresenter.StrokeContainer.GetStrokes().Count == 0)
            {
                return(null);
            }

            CanvasDevice       device       = CanvasDevice.GetSharedDevice();
            CanvasRenderTarget renderTarget = new CanvasRenderTarget(device, (int)inker.ActualWidth, (int)inker.ActualHeight, 96);

            var image = await CanvasBitmap.LoadAsync(device, imageStream);

            using (var ds = renderTarget.CreateDrawingSession())
            {
                var imageBounds = image.GetBounds(device);
                var min         = Math.Min(imageBounds.Height, imageBounds.Width);

                imageBounds.X      = (imageBounds.Width - min) / 2;
                imageBounds.Y      = (imageBounds.Height - min) / 2;
                imageBounds.Height = min;
                imageBounds.Width  = min;

                ds.Clear(Colors.White);
                ds.DrawImage(image, new Rect(0, 0, inker.ActualWidth, inker.ActualWidth), imageBounds);
                ds.DrawInk(inker.InkPresenter.StrokeContainer.GetStrokes());
            }

            var file = await(await AdventureObjectStorageHelper.GetDataSaveFolder()).CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting);

            using (var stream = await file.OpenAsync(FileAccessMode.ReadWrite))
            {
                await renderTarget.SaveAsync(stream, CanvasBitmapFileFormat.Jpeg, 1f);
            }

            return(file.Path);
        }
Пример #5
0
 public DataProvider()
 {
     _localStorageService = new AdventureObjectStorageHelper();
     _mResetEvent         = new ManualResetEventSlim(true);
 }