如题!

解决方案 »

  1.   

    用image.save(..)
    保存到memorystream中,再用memorystream.getbuffer就能获得byte[]
      

  2.   

    memorystream stream=new memorystream();
    picturebox1.image.save(stream);
    byte[] buffer=stream.getbuffer();大概是这样
      

  3.   

    picturebox1.image.save(...);
    主这个函数不知道怎么用,它有五个重载!
      

  4.   

    在asp.net中是这么做的:
    changimage.aspx中代码:
    <%@ Page Language="vb" AutoEventWireup="false" Codebehind="changimage.aspx.vb" Inherits="uploadimage.changimage"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
        <HEAD>
            <title></title>
            <meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
            <meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
            <meta name="vs_defaultClientScript" content="JavaScript">
            <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
        </HEAD>
        <body MS_POSITIONING="GridLayout">
            <form id="Form1" method="post" enctype="multipart/form-data" runat="server">
                <FONT face="宋体"><INPUT id="File1" style="Z-INDEX: 101; LEFT: 291px; WIDTH: 180px; POSITION: absolute; TOP: 119px; HEIGHT: 45px" type="file" size="10" name="File1" runat="server">                        <asp:Button id="cmdupload" style="Z-INDEX: 103; LEFT: 402px; POSITION: absolute; TOP: 194px" runat="server" Text="上传图片" Width="81px" Height="42px"></asp:Button>
                </FONT>
            </form>
        </body>
    </HTML>
    changimage.aspx.vb中代码如下:
    Public Class changimage
        Inherits System.Web.UI.Page
        Protected WithEvents cmddemo As System.Web.UI.WebControls.Button
        Protected WithEvents cmdupload As System.Web.UI.WebControls.Button
        Protected WithEvents SqlConn As System.Data.SqlClient.SqlConnection
        Protected WithEvents SqlComm As System.Data.SqlClient.SqlCommand
        Protected WithEvents File1 As System.Web.UI.HtmlControls.HtmlInputFile#Region " Web Form Designer Generated Code "    'This call is required by the Web Form Designer.
        <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
            Me.SqlConn = New System.Data.SqlClient.SqlConnection()
            Me.SqlComm = New System.Data.SqlClient.SqlCommand()    End Sub    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
           Form Designer
           InitializeComponent()
        End Sub#End Region    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        End Sub
       
        Private Sub cmdupload_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdupload.Click
            Dim image As System.Drawing.Image, newimage As System.Drawing.Image
            Dim callb As System.Drawing.Image.GetThumbnailImageAbort
            Dim f As System.IO.File, fs As System.IO.FileStream
            Dim temppath As String 
            Dim bigdata As Byte(), smalldata As Byte()   '大图片数据、小图片数据
            Dim pic As System.Data.SqlClient.SqlParameter, picsmall As System.Data.SqlClient.SqlParameter
            '检察上传文件是否合标准,check函数是我根据网站需要写的了
            If check(File1.PostedFile.FileName) <> "ok" Then
                Response.Write(check(File1.PostedFile.FileName))
                Exit Sub
            End If
            '设置临时路径,为了防止多用户访问时的冲突,设了一个application对象
            If Application("image") = "" Then
                Application("image") = 0
            End If
            Application.Lock()
            temppath = Server.MapPath(CStr(Application("image")))  '临时路径
            Application("image") = Application("image") + 1
            Application.UnLock()
            '读取图片的数据
            ReDim bigdata((Me.File1.PostedFile.InputStream.Length)
            Me.File1.PostedFile.InputStream.Read(bigdata, 0, UBound(bigdata))  '将原图片数据读到bigdata中
            '改变图片的大小
            image = System.Drawing.Image.FromStream(Me.File1.PostedFile.InputStream)
    'newimage里面的size也可另外设置,我只用了80*60和60*80两种
            If image.Width > image.Height Then
                newimage = image.GetThumbnailImage(80, 60, callb, New System.IntPtr(0))
            Else
                newimage = image.GetThumbnailImage(60, 80, callb, New System.IntPtr(0))
            End If
            image.Dispose()   
    '将新图片及图片变小后存到临时路径中
            newimage.Save(temppath, System.Drawing.Imaging.ImageFormat.Jpeg)
            newimage.Dispose()
    '读取临时文件数据到smalldata中
            fs = New System.IO.FileStream(temppath, IO.FileMode.Open, IO.FileAccess.Read)
            ReDim smalldata(fs.Length)
            fs.Read(smalldata, 0, UBound(smalldata))
            fs.Close()
    '上述获得小图片的方法我原本想用system.io.memorystream的,可是行不通:代码如下:
    'dim m as system.io.memorystream
    'm=new system.io.memorystream()
    'newimage.save(m,System.Drawing.Imaging.ImageFormat.Jpeg)
    'redim smalldata(m.length)
    'm.read(smalldata,0,m.length)
    '可是上述方法读出来的smalldata全是空的,不知道原因,请指教
            '删除临时文件
            If f.Exists(temppath) Then
                f.Delete(temppath)
            End If
            '将数据加入数据库中
    '由于数据库中有image字段,我用sql插不进去,就用一个存储过程
    '请教各位大虾用sql语句插入有image字段的表该怎么写
    '用insert into talbe(pic,picsmall) values("&bigdata&","&smalldata&")这样不行,用'"&bigdata&"'也不行呀!
            SqlConn = New System.Data.SqlClient.SqlConnection(connstr)  '可自己设置connstr连接数据库服务器
            SqlComm = New System.Data.SqlClient.SqlCommand()
            SqlComm.CommandType = CommandType.StoredProcedure
            SqlComm.CommandText = "dbo.image"
            pic = New System.Data.SqlClient.SqlParameter("@pic", SqlDbType.Image)
            pic.Value = bigdata
            picsmall = New System.Data.SqlClient.SqlParameter("@picsmall", SqlDbType.Image)
            picsmall.Value = smalldata
            SqlComm.Parameters.Add(pic)
            SqlComm.Parameters.Add(picsmall)
            SqlComm.Connection = SqlConn
            SqlComm.Connection.Open()
            SqlComm.ExecuteNonQuery()
            SqlComm.Connection.Close()
            SqlComm.Dispose()
            SqlConn.Dispose()
        End Sub
    End Classdbo.image存储过程如下:
    create proc dbo.image
      @pic image,
      @picsmall image
    as
      insert into table(pic,picsmall) values (@pic,@picsmall)
      

  5.   

    我已经解决了!
    http://xt0055.27h.com/csharp-01-03.htm
      

  6.   

    通过以下方式可以实现文件的全部/部分内容复制,而无论文件是何种类型。
    特别地,可以用此方法将图片保存到byte[]中。(对RFID设计者非常有用) 
    //添加引用
    using System.IO;//窗体中添加打开文件对话框,用来选择图片文件
    if(openFileDialog1.ShowDialog() == DialogResult.OK)

        FileStream fs1,fs2;
        try
        { 
            fs1=File.OpenRead(openFileDialog1.FileName);
            fs2=File.OpenWrite("c:\\11.jpg");
        } 
        catch
        {
            Console.WriteLine("File open failed");
            return; 
        } 
        byte [] b=new byte[102800];
        int n=fs1.Read(b,0,102800); //读文件保存到byte[]中
        fs1.Close();
        fs2.Write(b,0,102800);    //从byte[]中恢复文件
        fs2.Close();
    }