• Silverlight缩略图生成(使用WriteableBitmap类)


    前段時間,一直因為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

    博主以及同事和你共同探讨感兴趣的话题。



  • 相关阅读:
    65_磁盘文件的使用
    64_设备文件的使用
    63_json解析成map格式
    62_json文件解析成结构体格式
    61_map生成json的使用
    60_通过结构体生成json
    59_字符串的转换
    58_字符串的一些操作函数的使用
    57_recover的使用
    56_异常处理error,errors和painc的使用
  • 原文地址:https://www.cnblogs.com/lilin123/p/2747589.html
Copyright © 2020-2023  润新知