public void SaveCaptureImageToLocal(FrameworkElement saveElement) { WriteableBitmap writeBitmap = new WriteableBitmap(saveElement,null); string thirdDicUrl = "Shared/ShellContent/titles"; using (var store = IsolatedStorageFile.GetUserStoreForApplication()) { if (!store.DirectoryExists(thirdDicUrl)) store.CreateDirectory(thirdDicUrl); using (var writer = new StreamWriter(new IsolatedStorageFileStream(SaveBackgroundImagePath, FileMode.Create, FileAccess.Write, store))) { var pngEncoder = new ImageTools.IO.Png.PngEncoder(); pngEncoder.Encode(writeBitmap.ToImage(), writer.BaseStream); //MemoryStream controlStream = new MemoryStream(); //writeBitmap.SaveJpeg(controlStream,691,336, 0, 100); //writeBitmap.SetSource(controlStream); //writeBitmap.WritePNG(writer.BaseStream); } } }
public void SaveCaptureImageToLocal(FrameworkElement saveElement) { WriteableBitmap writeBitmap = new WriteableBitmap(saveElement, null); string thirdDicUrl = "Shared/ShellContent/titles"; using (var store = IsolatedStorageFile.GetUserStoreForApplication()) { if (!store.DirectoryExists(thirdDicUrl)) { store.CreateDirectory(thirdDicUrl); } using (var writer = new StreamWriter(new IsolatedStorageFileStream(SaveBackgroundImagePath, FileMode.Create, FileAccess.Write, store))) { var pngEncoder = new ImageTools.IO.Png.PngEncoder(); pngEncoder.Encode(writeBitmap.ToImage(), writer.BaseStream); //MemoryStream controlStream = new MemoryStream(); //writeBitmap.SaveJpeg(controlStream,691,336, 0, 100); //writeBitmap.SetSource(controlStream); //writeBitmap.WritePNG(writer.BaseStream); } } }
private void ParseImg(HtmlNode htmlNode, ref List <Elements.BaseElement> elements) { string path = _ePubViewer.Book.GetFilePath(HttpUtility.UrlDecode(htmlNode.Attributes["src"].Value.Replace("../", ""))); if (path == null) // img src file does not exists (don't render) { Debug.WriteLine(String.Format(CultureInfo.InvariantCulture, "Warning: EPubReader.Parseer.ParseImg - Image \"{0}\" does not exists.", HttpUtility.UrlDecode(htmlNode.Attributes["src"].Value.Replace("../", "")))); return; } Stream s = IsolatedStorageHelper.ReadZipStream(path); string fileName = Guid.NewGuid().ToString(); Size size = Size.Empty; // detect image type if ( path.EndsWith(".jpg", StringComparison.OrdinalIgnoreCase) || path.EndsWith(".jpeg", StringComparison.OrdinalIgnoreCase) || path.EndsWith(".jpe", StringComparison.OrdinalIgnoreCase) || path.EndsWith(".jif", StringComparison.OrdinalIgnoreCase) || path.EndsWith(".jfif", StringComparison.OrdinalIgnoreCase) || path.EndsWith(".jfi", StringComparison.OrdinalIgnoreCase) ) { BitmapSource bs = new BitmapImage(); bs.SetSource(s); size = new Size(bs.PixelWidth, bs.PixelHeight); // save image fileName += ".jpg"; string isfPath = Path.Combine(_ePubViewer.Book.GetImagesDirectory(), fileName); try { using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication()) { if (!isf.DirectoryExists(Path.GetDirectoryName(isfPath))) { isf.CreateDirectory(Path.GetDirectoryName(isfPath)); } using (IsolatedStorageFileStream isfs = isf.CreateFile(isfPath)) { WriteableBitmap wb = new WriteableBitmap(bs); wb.SaveJpeg(isfs, bs.PixelWidth, bs.PixelHeight, 0, 100); isfs.Close(); } } } catch { Debug.WriteLine(String.Format(CultureInfo.InvariantCulture, "Warning: EPubReader.Parseer.ParseImg - Error saving image \"{0}\".", isfPath)); return; } } else if ( path.EndsWith(".bmp", StringComparison.OrdinalIgnoreCase) || path.EndsWith(".dib", StringComparison.OrdinalIgnoreCase) || path.EndsWith(".gif", StringComparison.OrdinalIgnoreCase) || path.EndsWith(".png", StringComparison.OrdinalIgnoreCase) ) { ImageTools.ExtendedImage extendedImage = new ImageTools.ExtendedImage(); ImageTools.IO.IImageDecoder decoder; if ( path.EndsWith(".bmp", StringComparison.OrdinalIgnoreCase) || path.EndsWith(".dib", StringComparison.OrdinalIgnoreCase) ) { decoder = new ImageTools.IO.Bmp.BmpDecoder(); } else if (path.EndsWith(".gif", StringComparison.OrdinalIgnoreCase)) { decoder = new ImageTools.IO.Gif.GifDecoder(); } else // if (path.EndsWith(".png", StringComparison.OrdinalIgnoreCase)) { decoder = new ImageTools.IO.Png.PngDecoder(); } decoder.Decode(extendedImage, s); size = new Size(extendedImage.PixelWidth, extendedImage.PixelHeight); ImageTools.IO.Png.PngEncoder pngEncoder = new ImageTools.IO.Png.PngEncoder(); // save image fileName += ".png"; string isfPath = Path.Combine(_ePubViewer.Book.GetImagesDirectory(), fileName); try { using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication()) { if (!isf.DirectoryExists(Path.GetDirectoryName(isfPath))) { isf.CreateDirectory(Path.GetDirectoryName(isfPath)); } using (IsolatedStorageFileStream isfs = isf.CreateFile(isfPath)) { pngEncoder.Encode(extendedImage, isfs); isfs.Close(); } } } catch { Debug.WriteLine(String.Format(CultureInfo.InvariantCulture, "Warning: EPubReader.Parseer.ParseImg - Error saving image \"{0}\".", isfPath)); return; } } else { s.Close(); s.Dispose(); Debug.WriteLine(String.Format(CultureInfo.InvariantCulture, "Warning: EPubReader.Parseer.ParseImg - Not recognizable image type \"{0}\".", path)); return; } RemoveLastBreak(ref elements); // add image Elements.BaseElement element = new Elements.Image() { FileName = fileName, Width = (int)size.Width, Height = (int)size.Height }; ExtractId(htmlNode, ref element); elements.Add(element); }