zoukankan      html  css  js  c++  java
  • WPF bind baidu Image

     as there baidu image has protect refer from other site to use.

     need download i use request header add referer:http://www.baidu.com

    <Window x:Class="WpfApplication1.WindMsg"

            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="WindMsg" Height="300" Width="300" Closing="Window_Closing" Loaded="Window_Loaded">
        <Grid>
            <Image Name="img" Stretch="Uniform" Source="{Binding BitmapImg}"/>
            <Button Content="{Binding Text}" Height="65" HorizontalAlignment="Left" Margin="58,48,0,0" Name="button1" VerticalAlignment="Top" Width="160" Click="button1_Click" />
        </Grid>
    </Window>
     public WindMsg()
            {
                InitializeComponent();
                d = new ImageData() { Url = "http://img0.imgtn.bdimg.com/it/u=3028557787,2951839071&fm=15&gp=0.jpg", Text = "test button text" };
                this.DataContext = d;
            }
            ImageData d;
            public class ImageData
            {
                public string Url { get; set; }
                public string Text { get; set; }
                public ImageSource BitmapImg
                {
                    get { return GetImageData(); }
                    set { }
                }
                BitmapImage GetImageData()
                {
                    using (WebClient wc = new WebClient())
                    {
                        wc.Headers.Add("Referer", "http://www.baidu.com");
                        Stream stream = wc.OpenRead(Url);
                        BitmapImage b = new BitmapImage();
                        b.BeginInit();
                        b.StreamSource = stream;
                        b.EndInit();
                        return b;
                    }
                }
            }

     缓冲图片,延迟加载

    // Create source
    BitmapImage myBitmapImage = new BitmapImage();
    // BitmapImage.UriSource must be in a BeginInit/EndInit block
    myBitmapImage.BeginInit();
    myBitmapImage.UriSource = new Uri(str, UriKind.Absolute);
    // To save significant application memory, set the DecodePixelWidth or  
    // DecodePixelHeight of the BitmapImage value of the image source to the desired 
    // height or width of the rendered image. If you don't do this, the application will 
    // cache the image as though it were rendered as its normal size rather then just 
    // the size that is displayed.
    // Note: In order to preserve aspect ratio, set DecodePixelWidth
    // or DecodePixelHeight but not both.
    myBitmapImage.DecodePixelWidth = 2048;
    myBitmapImage.EndInit();
    //set image source
  • 相关阅读:
    zookeeper基础笔记
    基于spring@aspect注解的aop实现
    Struts2中的开启AsyncContext的方法
    在执行gem install redis时 : ERROR: Error installing redis: redis requires Ruby version >= 2.2.2
    ConcurrentHashMap原理笔记
    Java并发Condition原理分析
    CountDownLatch实现原理
    ThreadPoolExecutor 线程池原理分析
    HashMap原理
    线程池的用法
  • 原文地址:https://www.cnblogs.com/wgscd/p/8652147.html
Copyright © 2011-2022 走看看