tx1721110240
哀莫离裳
采纳率100%
2017-08-09 05:41

Image.FromStream(stream1) 将数据流转成图片时报错:内存不足

已采纳

将数据流转成图片时报错,内存不足,不知道怎么处理,求大神指点

 //解析json串
                JObject JsonTrackData = (JObject)JsonConvert.DeserializeObject(TrackData);
                //获取imageInfo
                string imgStrData = JsonTrackData["result"]["imageInfo"].ToString();
                //得到图片字节码
                    //Base6解码
                    byte[] bytes_data = Convert.FromBase64String(imgStrData);
                    string urlData = Server.MapPath("~/TrackImage/Data.png");
                    MemoryStream stream1 = new MemoryStream(bytes_data);

                    Bitmap btm = new Bitmap(stream1);

                    stream1.Position = 1333300;
                    System.Drawing.Image imgData = Image.FromStream(stream1);//报错内存不足
                    imgData.Save(urlData, System.Drawing.Imaging.ImageFormat.Png);//xxx.jpeg为文件名
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

5条回答

  • tx1721110240 哀莫离裳 4年前

     <img src="data:image/jpeg;base64,这里加还没有解码的imgStrData">
    

    点赞 评论 复制链接分享
  • tx1721110240 哀莫离裳 4年前

    问题解决了,因为单个数据是在太大,直接绑定在页面的里,以前都不知道还有这种写法

    点赞 评论 复制链接分享
  • tx1721110240 哀莫离裳 4年前

    没人回自己顶一下,byte[] bytes_data 里面长度是9万多,应该不是很大呀

    点赞 评论 复制链接分享
  • zhaogoupan 本宫小五 4年前

    将图片分多个子包吧,每个包一个标识,分包下载

    点赞 评论 复制链接分享
  • XianRenShan XianRenShan 4年前

    将图像以二进制流形式存储到数据库中示例
    protected void imgbtnCreate_Click(object sender, ImageClickEventArgs e)
    {

        string PerHomeName=tbPerHomeName.Text;//获取空间名
    
        string PerHomeSign=txtPerSign.Text; //获取个性签名
    
        string imgPath = uploadFile.PostedFile.FileName;//获取文件件名
    
        string lastName = imgPath.Substring(imgPath.LastIndexOf(".") + 1);//获取文件上传后缀名
        SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["conStr"]);
        conn.Open();
        if (uploadFile.PostedFile.FileName != "" && lastName.ToLower() == "jpg" || lastName.ToLower() == "gif")
        {
            if (uploadFile.PostedFile.ContentLength > 40960)
            {
                Response.Write("<script language='javaScript'>alert('你上传的图片超过了40KB!')</script>");
                return;
            }
            int imgLength = uploadFile.PostedFile.ContentLength;//获取上传文件大小
            Byte[] imageData = new Byte[imgLength]; //定义Byte数组
            HttpPostedFile hp = uploadFile.PostedFile;//创建访问客户端上传文件的对象
            Stream imagestream = hp.InputStream;//创建数据流对象
            //将图片数据放到image数据对象实例中,其中0代表数组指针的起始位置,imagelength表示要读取流的长度
            imagestream.Read(imageData, 0, imgLength);
            string sqlstr = "insert into PerHomeDetail(PerHomeName,PerHomeSign,PerHomeLogo)values('" + PerHomeName + "','" + PerHomeSign + "',@ImageData)";
            SqlCommand comm = new SqlCommand(sqlstr, conn);
            comm.Parameters.Add("@ImageData", SqlDbType.Image);
            comm.Parameters["@ImageData"].Value = imageData;
            comm.ExecuteNonQuery();
            conn.Close();
            Response.Write("<Script>alert('个人空间创建成功!')</Script>");
        }
        else
        {
            Response.Write("<script>alert('上传头像不能为空,且格式必须为gif或jpg!');location='javascript:history.go(-1)'</script>");
        }
    }
    
        转自:http://bbs.csdn.net/topics/390932070
    
    点赞 评论 复制链接分享

相关推荐