private void btnSave_Click(object sender, RoutedEventArgs e) { SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "JPEGファイル (*.jpg)|*.jpg|PNGファイル (*.png)|*.png|ビットマップファイル (*.bmp)|*.bmp"; if (sfd.ShowDialog() == true) { IImageEncoder enc; string fn = sfd.SafeFileName.ToLower(); if(fn.EndsWith(".jpg")) { enc = new JpegEncoder(); } else if (fn.EndsWith(".png")) { enc = new PngEncoder(); } else if (fn.EndsWith(".bmp")) { enc = new BmpEncoder(); } else { MessageBox.Show("エラー"); return; } double scaledWidth = (cropImage.Width * zoom); double scaledHeight = (cropImage.Height * zoom); double scaledLeft = (imageWidth - scaledWidth) / 2; double scaledTop = (imageHeight - scaledHeight) / 2; Rect r = new Rect((double)cropCanvas.GetValue(Canvas.LeftProperty), (double)cropCanvas.GetValue(Canvas.TopProperty), cropCanvas.Width, cropCanvas.Height); Rect r2 = new Rect(scaledLeft, scaledTop, scaledWidth , scaledHeight); r.Intersect(r2); double clipedLeft = r.Left - scaledLeft; double clipedTop = r.Top - scaledTop; r.X = clipedLeft; r.Y = clipedTop; ScaleTransform st = new ScaleTransform(); st.ScaleX = zoom; st.ScaleY = zoom; WriteableBitmap wb = new WriteableBitmap(cropImage, st); WriteableBitmap outputWb = new WriteableBitmap((int)r.Width, (int)r.Height); outputWb.Blit(new Rect(0, 0, r.Width, r.Height), wb, new Rect(r.Left, r.Top, r.Width, r.Height)); ImageTools.Image img = ToImage(outputWb); using (Stream stream = sfd.OpenFile()) { enc.Encode(img, stream); } } }
private void saveImage(Stream image, bool shutdown = false) { using (var store = System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication()) { string filename = "mologo.bmp"; if (shutdown) { filename = "mologo_shutdown.bmp"; } #if WP8 using (var stream = File.Open(splashDir+filename,FileMode.Create)) #else using (var stream = store.OpenFile(filename, System.IO.FileMode.Create)) #endif { var img = new Image(); img.Width = ResolutionSize.Width; img.Height = ResolutionSize.Height; var bi = new BitmapImage(); bi.SetSource(image); img.Source = bi; var img1 = img.ToImage(); IImageEncoder encoder = new BmpEncoder(); ExtendedImage ei = new ExtendedImage(img1); if (ei.PixelHeight != (int)ResolutionSize.Height || ei.PixelWidth != (int)ResolutionSize.Width) { byte[] pixels = new byte[((int)ResolutionSize.Height) * ((int)ResolutionSize.Width)]; int i = 0; foreach (byte b in pixels) { if (ei.Pixels.Length < i) { pixels[i] = b; } else { pixels[i] = 0; } i++; } ei.SetPixels((int)ResolutionSize.Width, (int)ResolutionSize.Height, ei.Pixels); } encoder.Encode(ei, stream); } } }