通過Stream把Image轉成Byte[],然後儲存到資料庫的方法
Image轉成Byte[]的問題把我這個入門級的Asp.Net使用者快要搞暈了,費了很大的勁,查了很多的文章,終於搞定了,把方法寫出來,希望能幫助遇到同樣問題的人.
程式目的是做一個可以上傳照片,然後生成縮圖,把縮圖儲存到資料庫image欄位中,供顯示照片時動態顯示輸出.
我把關鍵程式碼列出來:
//下面是根據上傳的檔案,產生縮圖,然後儲存到資料庫image表中(為將問題簡單化,這裡把表的欄位做了減少).
string fstr = FileUpload1.PostedFile.FileName; ;//上傳的檔名
string fmime = FileUpload1.PostedFile.ContentType;//檔案的MIME型別
string sql;
int fsize = FileUpload1.PostedFile.ContentLength; //檔案大小
//利用Bitmap類獲得影象的尺寸
Bitmap bmp = new Bitmap(fstr);
int imgH = bmp.Height;
int imgW = bmp.Width;
//縮圖保持原圖片比例,計算出大小
float simg1,simg2;
if (imgW > imgH)
{
//橫向圖片
simg1 = 100;
simg2 = simg1/imgW * imgH;
}
else
{
//縱向圖片
simg2 = 100;
simg1 = simg2/imgH * imgW;
}
//生成縮圖
System.Drawing.Image smallimg = bmp.GetThumbnailImage((int)simg1, (int)simg2, null, IntPtr.Zero);
MemoryStream ms = new MemoryStream();
smallimg.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);//將影象儲存到記憶體流中
byte[] data ={ }; //建立一個位元組陣列,用於儲存影象資料
data=ms.ToArray();//把流的資料儲存到陣列
fsize = (int)ms.Length;//流資料大小
//生成SQL語句,因為使用了位元組陣列,必須使用帶引數的SQL,否則無法執行,@1就是引數
SqlConnection conn = new SqlConnection();
conn.ConnectionString = ConfigurationManager.ConnectionStrings["testConnectionString"].ConnectionString;
conn.Open();
sql = "insert into [image] (itype,imagedata,isize) values('" + fmime + "',@1," + fsize + ")";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.Add(new SqlParameter("@1", SqlDbType.Image));
cmd.Parameters["@1"].Value = data;
int count = cmd.ExecuteNonQuery();
//下面是動態顯示影象資料
SqlConnection conn = new SqlConnection();
conn.ConnectionString = ConfigurationManager.ConnectionStrings["testConnectionString"].ConnectionString;
conn.Open();
string sql = "select * from [image] where id=1"; //這裡id使用的是1,實際可以根據需要傳一個值
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.CommandTimeout = 60;
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
Response.ContentType = dr["itype"].ToString().Trim();
//輸出圖片檔案二進位制資料
Response.OutputStream.Write((byte[])dr["imagedata"], 0, (int)dr["isize"]);
Response.End();
}
/*補充說明:
*連線資料庫部分的程式碼可以做成一個類,供多次引用,而不必要每次重複地寫出來.
*如果要將動態顯示出來的影象用一個Image控制元件顯示出來的話,可以把動態顯示資料的程式碼做成一個單獨的檔案例
*如"showimage.aspx",然後將Image的src地址寫為"showimage.aspx",如果需要動態顯示多個影象,可以給"showimage.aspx"傳引數進
*去,改變id的值即可.
*/
相關推薦
通過Stream把Image轉成Byte[],然後儲存到資料庫的方法
Image轉成Byte[]的問題把我這個入門級的Asp.Net使用者快要搞暈了,費了很大的勁,查了很多的文章,終於搞定了,把方法寫出來,希望能幫助遇到同樣問題的人. 程式目的是做一個可以上傳照片,然後生成縮圖,把縮圖儲存到資料庫image欄位中,供顯示照片時動態顯示
Chapter 6 自定義資料協議【第十三講】 通過大端序列方法將4個位元組int轉成 byte陣列
第一種方法: 通過大端序列方法將4個位元組int轉成 byte陣列大端序列方法:int2bytes:將int 從高到低位分別儲存到 byte[0] ~ byte[3] byte[] bytes = new byte[4]; for (int i = 0; i &
Python爬蟲系列(四):Beautiful Soup解析HTML之把HTML轉成Python對象
調用 nor 結束 版本 現在 name屬性 data 官方文檔 get 在前幾篇文章,我們學會了如何獲取html文檔內容,就是從url下載網頁。今天開始,我們將討論如何將html轉成python對象,用python代碼對文檔進行分析。 (牛小妹在學校折騰了好幾天,也沒把h
java利用ffmpeg把圖片轉成yuv格式
exceptio ioe ever readline filepath uid ont ati cep 安裝ffmpeg: 安裝目錄:/usr/share/ffmpeg 創建ffmpeg目錄,解壓ffmpeg-3.4.1.tar.bz2 tar -xjvf ffmpeg-3
使用Exe4j把jar轉成exe
位操作 nbsp gpo 但是 生成 exe 綠色 pos jdk版本 把java程序轉成可執行的.exe。 上網搜索了一下。使用exe4j可以。 但是轉化過程總有一些小差錯。版本原因,或者其他原因。 本人使用exe4j版本 exe4j_windows-x64_5.0,在
如何把scratch轉成一個swf文件
post 就是 如何 div 殺毒 online BE class 方案 scratch作為一款啟蒙用的積木式編程軟件,非常受人歡迎,但是,現在有一個問題就是,無法將之轉變成一個可執行文件,以便和周邊的人們分享。 我個人認為把scratch轉變為一個可執行的exe文件,並不
用手機如何把PDF轉成PPT文件
alt ESS com img 來看 mage 應用商店 是否 images PDF格式的文件是我們經常見到的一種文件格式,有時我們需要將這種格式轉換為PPT格式,這是如何轉換的呢,一起來看看如何將PDF格式轉換為PPT的吧。 準備工作:迅捷PDF轉換器,需要轉換的PDF文
把數字轉成大寫的(一二三)
public static string ChineseTONumber(string chineseStr1) { string numStr = "0123456789"; string chineseStr = "零一二三四五六七八九";
將File或者InputStream轉成byte陣列
package com.yinhai.demo.utils; import java.io.*; /** * 將File或者InputStream轉成byte陣列 * * Created by Blossom on 2018/7/28. */ public class FileUtil
如何免費把pdf轉成ppt
如何免費把pdf轉成ppt,其實pdf轉換成ppt是極其簡單的,使用wps軟體直接轉換就可以了,但是前提是需要充值成會員。當然我們常見的pdf轉換軟體也是可以的。比如像我們常用的北斗pdf轉換器,將pdf轉換成ppt時,原始檔為ppt的pdf檔案進行精準快速識別後進行轉換ppt,俗稱恢復成原
牛客:把字串轉成整數
題目描述: 將一個字串轉換成一個整數(實現Integer.valueOf(string)的功能,但是string不符合數字要求時返回0),要求不能使用字串轉換整數的庫函式。 數值為0或者字串不是一個合法的數值則返回0。 輸入描述: 輸入一個字串,包括數字母符號,可以為空。 輸出描
Springboot中引入本地jar包,並通過maven把專案打成可執行jar包
最近把以往的老專案用SpringBoot進行了重構,老專案中有部分本地依賴包不是放在maven庫裡的,是本地開發直接引入,需要在mvn package的時候把本地依賴jar也打進可執行包中。 這種通用問題,在網上找了一圈卻沒發現什麼好的解決辦
java把html轉成圖片的方法
程式碼 1.1 html模版 static String HtmlTemplateStr = "<style type=\"text/css\">"+ "body {background-color: yellow}"+ "h1 {background
(劍指offer)把字串轉成整數
時間限制:1秒 空間限制:32768K 熱度指數:141595 本題知識點: 字串 題目描述 將一個字串轉換成一個整數(實現Integer.valueOf(string)的功能,但是string不符合數字要求時返回0),要求不能使用字串轉換整數的庫函式。 數值為0或者字串不是一個合法
java 反射轉換類(把map轉為java bean , 把javabean 轉成 map)
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import
把Flash轉成Javascript/HTML5
SmokeScreen是 這樣一個開源軟體,它可以把Flash的swf檔案轉成Javascript/HTML5,它的口號是:Flash without plugin。為什麼要這樣做呢?它說主要是因主Apple的iPhone/iPod/iPad不支援flash,而且看似Steve Jobs也不願意在以後支
把物件轉成陣列
var json = { name: 'shskfh', id: 1, profit: 20, percent: '20%',
把數字轉成人民幣貨幣形式
formatMoney = (num) => { return `¥ ${num}`.replace(/\B(?=(\d{3})+(?!\d))/g, ","); }; format
不要把 svg 轉成 base64
不是什麼新知識,一個小技巧而已。 今天遇到一個專案中使用純色圖示的問題,用字型麻煩用圖片low,所以就想直接用svg,畢竟只有一兩個圖示。 第一想法是用 DataURI,然後想到了之前 CSS-tricks 的文章,翻了下做下彙總: 不建議把 svg 轉 base64 來用 base
Gson把物件轉成json格式的字串
最近在做一個java web service專案,需要用到jason,本人對java不是特別精通,於是開始搜尋一些java平臺的json類庫。 發現了google的gson,因為之前對於protocolbuf有一些瞭解,帶著一些好奇心,我開始使用了gson。