none
如何縮小上傳圖片 RRS feed

解答

  • 程式碼區塊

    Image sourceImage = Image.FromFile("source.jpg");


    Image bitmap = new Bitmap(100, 100);

    Graphics g = Graphics.FromImage(bitmap);
    g.InterpolationMode = InterpolationMode.High;
    g.SmoothingMode = SmoothingMode.HighQuality;
    g.Clear(Color.Transparent);
    g.DrawImage(sourceImage, new Rectangle(0, 0, 100, 100), new Rectangle(0, 0, sourceImage.Width, sourceImage.Height), GraphicsUnit.Pixel);

     

    bitmap.Save("thumbnail.PNG", ImageFormat.Png);

     

     

     試試看...

     

    2007年10月30日 下午 02:24
  • Image.Save 其中一個多載是 Stream

    所以

    Dim ms As New IO.MemoryStream

    Image.Save(ms, imageFormat)

    ms.ToArray 就是位元組陣列。

     

    2007年11月1日 上午 09:09
    版主

所有回覆

  • 這分成好幾個部份耶...

     

    你是不會圖片上傳?

     

    還是不會縮圖?

     

    還是不會把圖片存進資料庫?

     

     

    2007年10月30日 上午 10:11
  • 不會縮圖

    2007年10月30日 上午 11:30
  • Hi

    縮圖部分可以參考看看下面程式碼

           

    程式碼區塊
    Dim img As Image
    img = Image.FromFile(Application.StartupPath & "\MyImages\9F.jpg")
    Dim G As Graphics = PictureBox2.CreateGraphics
    Dim P(2) As Point
    ''左上
    P(0) = New Point(0, 0)
    ''右上
    P(1) = New Point(100, 0)
    ''左下
    P(2) = New Point(0, 100)
    G.DrawImage(img, P)

     

    相關參考

    ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.cht/cpref8/html/M_System_Drawing_Graphics_DrawImage_1_d482ade5.htm

    2007年10月30日 下午 12:29
    版主
  • thanks

    我現在無法測試

    感覺上好像是畫圖為100*100

    我的意思是在網頁上上傳圖片

    在儲存之前將user上傳的圖片縮成100*100

    再儲存到database

    2007年10月30日 下午 12:50
  • 程式碼區塊

    Image sourceImage = Image.FromFile("source.jpg");


    Image bitmap = new Bitmap(100, 100);

    Graphics g = Graphics.FromImage(bitmap);
    g.InterpolationMode = InterpolationMode.High;
    g.SmoothingMode = SmoothingMode.HighQuality;
    g.Clear(Color.Transparent);
    g.DrawImage(sourceImage, new Rectangle(0, 0, 100, 100), new Rectangle(0, 0, sourceImage.Width, sourceImage.Height), GraphicsUnit.Pixel);

     

    bitmap.Save("thumbnail.PNG", ImageFormat.Png);

     

     

     試試看...

     

    2007年10月30日 下午 02:24
  • ...

     

    你的原始問題本身沒有寫清楚吧?直到後面才補充是網頁,浪費眾人時間,貼文前請先把本版公告看一遍。

     

    ASPNET 是 server 端的平台,所以所有東西都是上傳到 server 端後再處理。網頁本身沒辦法直接縮小圖檔,你必須寫一個 ActiveX DLL 崁入在你的網頁中來做這件事。

     

    不然為啥 Live Space 或是 google 等照片上傳時,都要先安裝 ActiveX 元件?

     

    用 VBNET 開發圖檔精靈壓縮圖檔方式如其他網友張貼的,當然, DrawImage 多載很多,可以挑選可以寫比較少行數的來處理。

     

    2007年10月30日 下午 02:46
    版主
  • 感謝chhuang的答覆

    若FileUpload1.FileBytes是可以直接將上傳的檔案存進Database的image的資料欄位

    bitmap.Save似乎只能存在server的資料夾,

    縮圖後是否能夠存進Database的image的資料欄位

     

    2007年11月1日 上午 08:56
  • Image.Save 其中一個多載是 Stream

    所以

    Dim ms As New IO.MemoryStream

    Image.Save(ms, imageFormat)

    ms.ToArray 就是位元組陣列。

     

    2007年11月1日 上午 09:09
    版主
  • 感謝璉璉的忠告,本版公告我有看幾遍

    但我也猜了好久,到底要貼在何板

    對一位初學者來說只知道用visual studio的vb來寫程式

    建議本版公告是否也應找初學者看看是否看的懂,

     

     

     

    2007年11月1日 上午 09:12
  • 本版公告歡迎版友討論指正。請另開討論緒。

     

    本版公告中並沒有限制本版能不能討論 asp.net ,要選擇 vb 或 aspnet 這是你個人自由意願。

     

    本版公告主要需要你提供開發環境、編譯器版本等必要資訊,亦有提供發問範例,若仍看不懂請指正,但請另開討論緒專門討論公告改正方向與原則,不要混雜在一般程式討論內。

    2007年11月1日 上午 09:19
    版主
  • 提供問題的詳細說明,是問的人的責任,不是答的人的責任。

     

    在提問題時就說明清楚,不但可以省下很多時間,也可以讓問題較快的得到答案。

    相反的,就是沒人理,或是要浪費時間去問問的人到底是怎麼回事。

     

    把問題講清楚,和是不是初學者一點關係都沒有。

    2007年11月1日 上午 09:25
    版主
  • 這個討論區效率非常高,

    令人敬佩

    2007年11月2日 上午 03:13