Silverlight將圖片轉(zhuǎn)換為byte的實(shí)現(xiàn)代碼
最近總是有人問(wèn)如何通過(guò)Silverlight上傳圖片并保存的后臺(tái)服務(wù)器?眾所周知,Silverlight是客戶端程序,不能很好與服務(wù)器進(jìn)行“溝通”,上傳圖片的方法呢大致都是通過(guò)以下流程:
1、客戶端獲取圖片-->2、轉(zhuǎn)換能夠傳輸?shù)臄?shù)據(jù)-->3、傳遞數(shù)據(jù)到服務(wù)端-->4、服務(wù)端還原數(shù)據(jù)為圖片
第一步和第四步?jīng)]有問(wèn)題,問(wèn)題大多出在第二步和第三步,如何得到客戶端和服務(wù)端都能識(shí)別并且容易傳遞的數(shù)據(jù)呢?
如果你使用的客戶端和服務(wù)端都是.NET方案,這就非常好辦,可以通過(guò)下面的方法:
1、客戶端得到客戶選擇的FileInfo,然后通過(guò)WebClient方法post到服務(wù)端,服務(wù)端再還原成圖片即可,詳細(xì)文章//www.jb51.net/article/74520.htm
2、客戶端將客戶選擇的圖片文件轉(zhuǎn)換成FileStream包裹在一個(gè)類中通過(guò)WCF傳遞到服務(wù)端,服務(wù)端再還原,詳細(xì)文章//www.jb51.net/article/74523.htm
有些同學(xué)會(huì)抓耳撓腮的問(wèn),難道就沒(méi)有人用silverlight傳遞到類似JAVA,PHP的情況嗎?當(dāng)然有,而且我最近碰到的都是這類似的情況,事先聲明我不是實(shí)在不了解JAVA和PHP,我只能將圖片轉(zhuǎn)換成byte給你,至于你怎么還原,我只能說(shuō):”同學(xué),任重而道遠(yuǎn)!“,不廢話了,下面見分析:
之前走了不少?gòu)澛?,總是想著將WriteableBitmap轉(zhuǎn)換成byte(也不知道是誰(shuí)上來(lái)就讓用WriteableBitmap轉(zhuǎn),T_T),后來(lái)我才發(fā)現(xiàn)其實(shí)完全沒(méi)必要這么麻煩,直接上代碼:
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) } }
直接通過(guò)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
上一篇:Unity3D獲取當(dāng)前鍵盤按鍵及Unity3D鼠標(biāo)、鍵盤的基本操作
欄 目:C#教程
本文標(biāo)題:Silverlight將圖片轉(zhuǎn)換為byte的實(shí)現(xiàn)代碼
本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/6853.html
您可能感興趣的文章
- 01-10C#實(shí)現(xiàn)打開畫圖的同時(shí)載入圖片、最大化顯示畫圖窗體的方法
- 01-10C#實(shí)現(xiàn)將窗體固定在顯示器的左上角且不能移動(dòng)的方法
- 01-10C#編程獲取資源文件中圖片的方法
- 01-10C#實(shí)現(xiàn)將程序鎖定到Win7任務(wù)欄的方法
- 01-10C#實(shí)現(xiàn)將應(yīng)用程序設(shè)置為開機(jī)啟動(dòng)的方法
- 01-10http圖片上傳安全性問(wèn)題 根據(jù)ContentType (MIME) 判斷其實(shí)不準(zhǔn)確、不
- 01-10C#將圖片存放到SQL SERVER數(shù)據(jù)庫(kù)中的方法
- 01-10C#操作數(shù)據(jù)庫(kù)中存取圖片文件的方法
- 01-10C#圖片處理3種高級(jí)應(yīng)用
- 01-10Silverlight文件上傳下載實(shí)現(xiàn)方法(下載保存)


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10C#通過(guò)反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁(yè)無(wú)法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實(shí)現(xiàn)txt定位指定行完整實(shí)例
- 01-10WinForm實(shí)現(xiàn)仿視頻 器左下角滾動(dòng)新
- 01-10C#停止線程的方法
- 01-10C#實(shí)現(xiàn)清空回收站的方法
- 01-10C#通過(guò)重寫Panel改變邊框顏色與寬度的
- 01-10C#實(shí)現(xiàn)讀取注冊(cè)表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機(jī)閱讀
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 04-02jquery與jsp,用jquery
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 01-10delphi制作wav文件的方法
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文