Casper-SC
20-08-2010, 17:36
Здравствуйте. Вот например у меня есть изображение на image. Мне нужно обрезать его часть и вернуть не BitmapSource, а BitmapImage. У меня ничего не получается. Как это можно сделать? Вот несколько осмысленных кусков кода из приложения.
//Глобальные переменные в статическом классе
private static BitmapImage bitmapImg;
private static System.Windows.Controls.Image image;
.......
//код из метода
Int32Rect rectangle = new Int32Rect();
//тут манипуляции с rectangle
.......
//и далее обрезание изображения
CroppedBitmap cb = new CroppedBitmap((BitmapSource)image.Source, rectangle); //Обрезаем нужную часть изображения
Image imageCropped = new Image();
imageCropped.Source = cb;
BitmapSource bitmapSource = (BitmapSource)imageCropped.Source; //это я просто пробовал, толку от этой строки нету
Это мне нужно для сохранения изображения в файл таким образом, как видите в качестве параметра тут получаем BitmapImage :
public static class ImageSaver
{
public static void SaveInJpeg(BitmapImage bmp, String Path, int Quality)
{
FileStream fileStream = new FileStream(Path, FileMode.CreateNew, FileAccess.Write, FileShare.None);
JpegBitmapEncoder jpgEncoder = new JpegBitmapEncoder();
jpgEncoder.QualityLevel = Quality;
jpgEncoder.Frames.Add(BitmapFrame.Create(bmp));
jpgEncoder.Save(fileStream);
fileStream.Close();
}
}
//Глобальные переменные в статическом классе
private static BitmapImage bitmapImg;
private static System.Windows.Controls.Image image;
.......
//код из метода
Int32Rect rectangle = new Int32Rect();
//тут манипуляции с rectangle
.......
//и далее обрезание изображения
CroppedBitmap cb = new CroppedBitmap((BitmapSource)image.Source, rectangle); //Обрезаем нужную часть изображения
Image imageCropped = new Image();
imageCropped.Source = cb;
BitmapSource bitmapSource = (BitmapSource)imageCropped.Source; //это я просто пробовал, толку от этой строки нету
Это мне нужно для сохранения изображения в файл таким образом, как видите в качестве параметра тут получаем BitmapImage :
public static class ImageSaver
{
public static void SaveInJpeg(BitmapImage bmp, String Path, int Quality)
{
FileStream fileStream = new FileStream(Path, FileMode.CreateNew, FileAccess.Write, FileShare.None);
JpegBitmapEncoder jpgEncoder = new JpegBitmapEncoder();
jpgEncoder.QualityLevel = Quality;
jpgEncoder.Frames.Add(BitmapFrame.Create(bmp));
jpgEncoder.Save(fileStream);
fileStream.Close();
}
}