Silverlight將圖片轉(zhuǎn)換為byte的實(shí)現(xiàn)代碼
最近總是有人問如何通過Silverlight上傳圖片并保存的后臺(tái)服務(wù)器?眾所周知,Silverlight是客戶端程序,不能很好與服務(wù)器進(jìn)行“溝通”,上傳圖片的方法呢大致都是通過以下流程:
1、客戶端獲取圖片-->2、轉(zhuǎn)換能夠傳輸?shù)臄?shù)據(jù)-->3、傳遞數(shù)據(jù)到服務(wù)端-->4、服務(wù)端還原數(shù)據(jù)為圖片
第一步和第四步?jīng)]有問題,問題大多出在第二步和第三步,如何得到客戶端和服務(wù)端都能識(shí)別并且容易傳遞的數(shù)據(jù)呢?
如果你使用的客戶端和服務(wù)端都是.NET方案,這就非常好辦,可以通過下面的方法:
1、客戶端得到客戶選擇的FileInfo,然后通過WebClient方法post到服務(wù)端,服務(wù)端再還原成圖片即可,詳細(xì)文章http://www.dbjr.com.cn/article/74520.htm
2、客戶端將客戶選擇的圖片文件轉(zhuǎn)換成FileStream包裹在一個(gè)類中通過WCF傳遞到服務(wù)端,服務(wù)端再還原,詳細(xì)文章http://www.dbjr.com.cn/article/74523.htm
有些同學(xué)會(huì)抓耳撓腮的問,難道就沒有人用silverlight傳遞到類似JAVA,PHP的情況嗎?當(dāng)然有,而且我最近碰到的都是這類似的情況,事先聲明我不是實(shí)在不了解JAVA和PHP,我只能將圖片轉(zhuǎn)換成byte給你,至于你怎么還原,我只能說:”同學(xué),任重而道遠(yuǎn)!“,不廢話了,下面見分析:
之前走了不少彎路,總是想著將WriteableBitmap轉(zhuǎn)換成byte(也不知道是誰上來就讓用WriteableBitmap轉(zhuǎn),T_T),后來我才發(fā)現(xiàn)其實(shí)完全沒必要這么麻煩,直接上代碼:
byte[] staticByte;//全局byte,為將byte轉(zhuǎn)換為Image private void OpenImage() { OpenFileDialog imageFile = new OpenFileDialog() { Filter = "Jpeg Files (*.jpg)|*.jpg|All Files(*.*)|*.*" }; if (imageFile.ShowDialog() == true) { System.IO.Stream fileStream=imageFile.File.OpenRead(); byte[] imageByte=new byte[fileStream.Length];//設(shè)置byte的長(zhǎng)度為文件流的長(zhǎng)度 fileStream.Read(imageByte,0,imageByte.Length);//將文件流信息讀取到byte數(shù)組中 staticByte = imageByte;//將讀取好的byte數(shù)組保存到全局 byteTextBox.Text=UTF8Encoding.UTF8.GetString(imageByte,0,imageByte.Length);//將byte數(shù)組顯示到前臺(tái) } }
直接通過FileStream.Read方法將文件流轉(zhuǎn)換成byte,ok完工!
后面我加了一點(diǎn)代碼將byte又轉(zhuǎn)換成圖片,代碼如下:
private void button1_Click(object sender, RoutedEventArgs e) { OpenImage(); MemoryStream memoryStream = new MemoryStream(staticByte,0,staticByte.Length);//將byte轉(zhuǎn)換為內(nèi)存流 BitmapImage img = new BitmapImage(); img.SetSource(memoryStream);//設(shè)置BitmapImage的源為內(nèi)存流 this.image1.Source = img;//顯示圖片 }
程序圖片
選擇圖片界面
效果界面
程序源碼
使用vs2010 sp1+silverlight5編寫,SilverlightImageToByte
- WPF實(shí)現(xiàn)圖片合成或加水印的方法【2種方法】
- 深入分析WPF客戶端讀取高清圖片卡以及縮略圖的解決方法詳解
- silverlight實(shí)現(xiàn)圖片局部放大效果的方法
- Silverlightbutton圖片切換樣式實(shí)例代碼
- C#實(shí)現(xiàn)圖片放大功能的按照像素放大圖像方法
- C# 實(shí)現(xiàn)的圖片蓋章功能,支持拖拽、旋轉(zhuǎn)、放縮、保存
- C#圖片按比例縮放的實(shí)現(xiàn)代碼
- c#圖片縮放圖片剪切功能實(shí)現(xiàn)(等比縮放)
- WPF/Silverlight實(shí)現(xiàn)圖片局部放大的方法分析
相關(guān)文章
C#畢業(yè)設(shè)計(jì)之Winform零壓健身房管理系統(tǒng)
本文介紹了個(gè)人的《零壓健身房管理系統(tǒng)(扁平化)》的基本流程和功能點(diǎn)的介紹,虛心接受各位的意見,歡迎在提出寶貴的意見,大家一起探討學(xué)習(xí)2021-09-09C#難點(diǎn)逐個(gè)擊破(7):checked與unchecked
checked 關(guān)鍵字用于對(duì)整型算術(shù)運(yùn)算和轉(zhuǎn)換顯式啟用溢出檢查。2010-02-02c# 實(shí)現(xiàn)圓形的進(jìn)度條(ProgressBar)
這篇文章主要介紹了c# 如何實(shí)現(xiàn)圓形的進(jìn)度條(ProgressBar),幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-03-03C#串口通訊概念及簡(jiǎn)單的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于C#串口通訊概念及簡(jiǎn)單的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03