前段時間,一直因為silverlight生成縮略圖而飽受困擾。
雖然聽說過WriteableBitmap這個類,能生成縮略圖。也曾百度上面粗略看過,一直沒找到合適的生成縮略圖的辦法。
今天,再次試過,終于成功。下面貼出代碼,實際的向大家說明一下,縮略圖是如何生成的。
/// 生成縮略圖 /// </summary> /// <param name="bitmap">要轉換的位圖</param> /// <returns>返回WriteableBitmap</returns> public WriteableBitmap RenderThumbnail(BitmapImage bitmap) { Image img = new Image(); img.Width = 150; img.Height = 150; img.Source = bitmap; WriteableBitmap Wimg = new WriteableBitmap(img,null); Wimg.Invalidate(); return Wimg; }
下面展示一個示例:
1 <UserControl x:Class="SilverlightTest.MainPage" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 5 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 6 mc:Ignorable="d" 7 d:DesignHeight="300" d:DesignWidth="400"> 8 9 10 <Grid x:Name="LayoutRoot" Background="White"> 11 <Grid.RowDefinitions> 12 <RowDefinition></RowDefinition> 13 <RowDefinition></RowDefinition> 14 </Grid.RowDefinitions> 15 <Image x:Name="TestImg1" Grid.Row="0" Source="/SilverlightTest;component/Images/20120229_reg_page1_09.jpg" Stretch="None"></Image> 16 <Image x:Name="TestImg" Grid.Row="1" Source="/SilverlightTest;component/Images/20120229_reg_page1_09.jpg" Stretch="None"></Image> 17 <TextBlock x:Name="txt" Grid.Row="1" VerticalAlignment="Bottom" HorizontalAlignment="Center"></TextBlock> 18 </Grid> 19 </UserControl>
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using System.Windows.Media.Imaging; namespace SilverlightTest { public partial class MainPage : UserControl { public MainPage() { InitializeComponent(); BitmapImage bmap = TestImg.Source as BitmapImage; WriteableBitmap wimg = this.RenderThumbnail(bmap); TestImg.Source = wimg; txt.Text ="原圖大小為:" +bmap.PixelWidth + "Px;縮略圖寬度為:" + wimg.PixelWidth+"Px"; } /// <summary> /// 生成縮略圖 /// </summary> /// <param name="bitmap">要轉換的位圖</param> /// <returns>返回WriteableBitmap</returns> public WriteableBitmap RenderThumbnail(BitmapImage bitmap) { Image img = new Image(); img.Width = 150; img.Height = 150; img.Source = bitmap; WriteableBitmap Wimg = new WriteableBitmap(img,null); Wimg.Invalidate(); return Wimg; } } }
請看如下效果:
更多WEB开发技术请加群:Asp.Net高级群 号码:261882616
博主以及同事和你共同探讨感兴趣的话题。