我有保存在Base64中的圖像,它們是風景和肖像的混合體。我想將它們全部顯示爲風景。在C#中,如何將Base64字符串轉換爲圖像,然後旋轉它?
我能夠將Base64字符串轉換爲BitmapImages,然後將其設置爲Image.Source,但我無法使旋轉工作。
在這個類中,我從XML獲取base64,然後調用SetupImage,它設置System.Windows.Controls.Image對象的源。
我試過兩種旋轉圖像的方式(當寬度小於高度時)都在這個代碼中。當我在BitmapImage上使用Rotation時,不會影響顯示的圖像。當我在圖像上使用RotateTransform時,圖像根本不顯示。
public class TrayImage
{
[XmlAttribute("id")]
public string ID { get; set; }
[XmlAttribute("data")]
public string Data { get; set; }
/// <summary>
/// Create an Image from the Base64 Data
/// </summary>
internal void SetupImage(ref System.Windows.Controls.Image image)
{
if (this.Data != null)
{
// Convert the Base64 to a BitmapImage
byte[] _BinaryData = Convert.FromBase64String(this.Data);
BitmapImage _ImageBitmap = new BitmapImage();
_ImageBitmap.BeginInit();
_ImageBitmap.StreamSource = new MemoryStream(_BinaryData);
_ImageBitmap.EndInit();
// If the image is portrait, rotate it
if (_ImageBitmap.Width < _ImageBitmap.Height)
{
// only use one rotation method at a time!!
//_ImageBitmap.Rotation = Rotation.Rotate90;
}
image.Source = _ImageBitmap;
// If the image is portrait, rotate it
if(image.Source.Width < image.Source.Height)
{
// only use one rotation method at a time!!
RotateTransform _RotateTransform = new RotateTransform(90);
image.RenderTransform = _RotateTransform;
}
}
}
}
我應該使用別的東西來轉換,然後旋轉圖像?
包括錯誤或什麼是不工作....還我不使用REF上的粉絲引用類型,如果我是你,我會將其轉換爲靜態方法。 – Seabizkit
我沒有收到錯誤信息,圖像只是以原始方向顯示,或根本不顯示。我在代碼中的其他地方使用了ID,但這裏並不相關。 – mike
是的,我認爲它不會使用實際上被修改的圖像!將其更改爲返回圖像的靜態輔助類。 – Seabizkit