前段時間,一直因為silverlight生成縮略圖而飽受困擾。
雖然聽說過WriteableBitmap這個類,能生成縮略圖。也曾百度上面粗略看過,一直沒找到合適的生成縮略圖的辦法。
今天,再次試過,終于成功。下面貼出代碼,實際的向大家說明一下,縮略圖是如何生成的。
/// <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; }
下面展示一個示例:
<UserControl x:Class="SilverlightTest.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="400"> <Grid x:Name="LayoutRoot" Background="White"> <Grid.RowDeFinitions> <RowDeFinition></RowDeFinition> <RowDeFinition></RowDeFinition> </Grid.RowDeFinitions> <Image x:Name="TestImg1" Grid.Row="0" Source="/SilverlightTest;component/Images/20120229_reg_page1_09.jpg" Stretch="None"></Image> <Image x:Name="TestImg" Grid.Row="1" Source="/SilverlightTest;component/Images/20120229_reg_page1_09.jpg" Stretch="None"></Image> <TextBlock x:Name="txt" Grid.Row="1" VerticalAlignment="Bottom" HorizontalAlignment="Center"></TextBlock> </Grid> </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/Wp8高級開發群 號碼:261882616
博主以及同事和你共同探討感興趣的話題。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。