コード例 #1
0
        //public static string AddImage(long bookmarkId, string imageUrl)
        //{
        //    //var generatedFileName = Path.ChangeExtension(RandomString(10, true), "jpeg");
        //    var generatedFileName = Path.ChangeExtension(MD5Core.GetHashStringShort(imageUrl), "image");
        //    var bookmarkFolder = BookmarksStorageManager.CreateBookmarkFolder(bookmarkId);
        //    var imageFilePath = Path.Combine(bookmarkFolder, generatedFileName);

        //    var client = new WebClient();
        //    client.AllowReadStreamBuffering = false;
        //    client.OpenReadCompleted += (sender, args) =>
        //    {
        //        using (var isoStore = IsolatedStorageFile.GetUserStoreForApplication())
        //        {
        //            if (isoStore.FileExists(imageFilePath))
        //                isoStore.DeleteFile(imageFilePath);

        //            var buffer = new byte[1024];
        //            //var length = args.Result.Length;

        //            using (var fileStream = isoStore.OpenFile(imageFilePath, FileMode.CreateNew, FileAccess.ReadWrite))
        //            {
        //                int bytesRead = 0;
        //                using (var reader = new BinaryReader(fileStream))
        //                {
        //                    while ((bytesRead = reader.Read(buffer, 0, 1024)) > 0)
        //                    {
        //                        fileStream.Write(buffer, 0, bytesRead);
        //                    }
        //                }
        //                Console.WriteLine("File: {0}", imageFilePath);
        //            }
        //        }
        //    };

        //    client.OpenReadAsync(new Uri(imageUrl));
        //    return imageFilePath;
        //}

        public static void AddImage(long bookmarkId, string imageUrl)
        {
            var generatedFileName = Path.ChangeExtension(MD5Core.GetHashStringShort(imageUrl), "image");
            var bookmarkFolder    = BookmarksStorageManager.CreateBookmarkFolder(bookmarkId);
            var imageFilePath     = Path.Combine(bookmarkFolder, generatedFileName);

            var client = new WebClient();
            //client.AllowReadStreamBuffering = false;
            var executedCallBack = new AutoResetEvent(false);

            client.OpenReadCompleted += (sender, args) =>
            {
                if (args.Error != null)
                {
                    return;
                }

                using (var isoStore = IsolatedStorageFile.GetUserStoreForApplication())
                {
                    try
                    {
                        if (isoStore.FileExists(imageFilePath))
                        {
                            isoStore.DeleteFile(imageFilePath);
                        }

                        var length = args.Result.Length;
                        var data   = new byte[length];

                        using (var fileStream = isoStore.CreateFile(imageFilePath))
                        {
                            args.Result.Read(data, 0, data.Length);
                            fileStream.Write(data, 0, data.Length);
                            fileStream.Flush();
                        }
                    }
                    catch
                    {
                        // ignore these exceptions as it doesnt matter if a download fails
                    }
                }

                executedCallBack.Set();
            };

            try
            {
                client.OpenReadAsync(new Uri(imageUrl));
                executedCallBack.WaitOne();
            }
            catch (Exception e)
            {
                // invalid URL
                // todo: Log this error
            }
        }
コード例 #2
0
        public static BitmapImage GetImage(string imageUrl, long bookmarkId)
        {
            using (var isoStore = IsolatedStorageFile.GetUserStoreForApplication())
            {
                var bookmarkFolder = Path.Combine("bookmarks", bookmarkId.ToString());
                var imageFilePath  = Path.Combine(bookmarkFolder, Path.ChangeExtension(MD5Core.GetHashStringShort(imageUrl), "image"));

                BitmapImage bitmapImage = null;

                if (isoStore.FileExists(imageFilePath))
                {
                    //byte[] data;

                    using (var imageStream = isoStore.OpenFile(imageFilePath, FileMode.Open, FileAccess.Read))
                    {
                        try
                        {
                            bitmapImage = new BitmapImage();
                            bitmapImage.SetSource(imageStream);
                        }
                        catch
                        {
                            bitmapImage = new BitmapImage(new Uri(imageUrl));
                        }
                        //data = new byte[imageStream.Length];
                        //imageStream.Read(data, 0, data.Length);
                        //imageStream.Close();
                    }

                    //var memoryStream = new MemoryStream(data);
                    //bitmapImage = new BitmapImage();
                    //bitmapImage.SetSource(memoryStream);
                }

                return(bitmapImage);
            }
        }
コード例 #3
0
        public static string GetImagePath(string imageUrl, long bookmarkId)
        {
            using (var isoStore = IsolatedStorageFile.GetUserStoreForApplication())
            {
                var bookmarkFolder = Path.Combine("bookmarks", bookmarkId.ToString());
                var imageFilePath  = Path.Combine(bookmarkFolder, Path.ChangeExtension(MD5Core.GetHashStringShort(imageUrl), "image"));

                if (isoStore.FileExists(imageFilePath))
                {
                    return(imageFilePath);
                }
                else
                {
                    return(string.Empty);
                }
            }
        }