none
Silverlight 有没有 getPixels ? RRS feed

  • 问题

  • 现在的项目有一个要求,需要把在 Silverlight 处理后的结果保存为一个图片。比如,需要把处理后的图片效果,以及加上的文字,合为一个图片。

    查了很多资料,
    Silverlight 直接无法保存,需要借助 服务器的 WCF 或者 WebService。现在的问题是,我们需要在服务器后台用 gdi+写好相关接口,那么,Silverlight 是用什么办法传相关图像的信息过去给我们来生成图片呢?

    我想到了 flash 的 bitmapdata.getpixel 。那么请问在 Silverlight 能不能实现这个功能,也就是实现一个把一个容器里(如 grid)里的所有子控件的像素  getPixels ,然后发到 WCF 中用 gdi+ 的setPixels来处理?

    谢谢。


    2008年11月28日 3:49

答案

  • silverlight没有System.Drawing类,你拿啥处理图片呀,就是比如动态显示一些用户的操作,实际图片流也不变.要用户自定义处理,用户按确定了,把你的图片流跟用户操作方法一起发给wcf,让wcf处理图片,一点也不难呀

     

    2008年11月30日 1:45
    版主

全部回复

  • 可以,把你的图片按流的方式过去就行了

    2008年11月28日 4:27
    版主
  • 能不能提供一些代码示例?非常感谢!
    2008年11月28日 10:14
  • Code Snippet

     

            System.IO.Stream stream;
            public ReadImg(Uri ImgUri)
            {
                WebClient wc = new WebClient();
                wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);

           wc.DownloadStringAsync(ImgUri);
       }

            void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
            {
                stream = e.Result;
            }

     

     

    你wcf接收一个stream再处理,然后返回一个stream回来不就行了,跟接收普通方法一样
    2008年11月28日 15:03
    版主
  • 非常感谢您的回答。

    不过,现在的问题是如何把一张经过处理后的图片的流发过去?如果直接发送过去,那么这张图片是还没有处理过的(就是最初的图片流),这样起不了作用。

    也就是说,一张图片加入到  Silverlight ,经过了处理 (如剪栽) 。然后再把处理后的图片转换为流,发过去...

    问题在于,经过处理后的图片如何转换为
    Stream 啊... 难道 Silverlight 保存一个图片,这么困难吗?




    2008年11月29日 19:04
  •  简繁 写:
    非常感谢您的回答。

    不过,现在的问题是如何把一张经过处理后的图片的流发过去?如果直接发送过去,那么这张图片是还没有处理过的(就是最初的图片流),这样起不了作用。

    也就是说,一张图片加入到  Silverlight ,经过了处理 (如剪栽) 。然后再把处理后的图片转换为流,发过去...

    问题在于,经过处理后的图片如何转换为
    Stream 啊... 难道 Silverlight 保存一个图片,这么困难吗?




     

    我是说把图片直接发送过去,然后wcf处理,然后再传回silverlight显示,silverlight不能直接处理图片吧(比如降像素,添加文字,剪裁之类的)

    2008年11月30日 1:37
    版主
  • silverlight没有System.Drawing类,你拿啥处理图片呀,就是比如动态显示一些用户的操作,实际图片流也不变.要用户自定义处理,用户按确定了,把你的图片流跟用户操作方法一起发给wcf,让wcf处理图片,一点也不难呀

     

    2008年11月30日 1:45
    版主
  • 实在没有办法,只能这样处理了。
    2008年11月30日 14:34