Graphics.DrawString加水印后图像失真

protected byte[] AddWaterText(byte[] image1)
        {
            try
            {
                MemoryStream ms = new MemoryStream(image1);
                System.Drawing.Image imgold = System.Drawing.Image.FromStream(ms);
                Bitmap bitmap = new Bitmap(imgold);
                Graphics graphics = Graphics.FromImage(bitmap);
                graphics.DrawImage(imgold, 0, 0, imgold.Width, imgold.Height);
                Font f = new Font("宋体", 10);
                Brush b = new SolidBrush(Color.Black);
                string strText = "仅用于申请,他用均无效" + DateTime.Now.ToString();
                graphics.DrawString(strText, f, b, 10, 10);
                //bitmap.Save("D:\\img1.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);

                MemoryStream ms1 = new MemoryStream(image1);
                bitmap.Save(ms1, System.Drawing.Imaging.ImageFormat.Jpeg);
                byte[] arr = new byte[ms1.Length];
                ms1.Position = 0;
                ms1.Read(arr, 0, (int)ms1.Length);
                graphics.Dispose();
                imgold.Dispose();
                ms.Close();
                ms1.Close();
                bitmap.Dispose();
                return arr;
            }
            catch (Exception ex)
            {
                LogHelper.WriteTxtErrorLog("生成图片水印失败"  + ex.ToString());
                return null;
            }

在asp.net环境中,使用如上代码生成的带有水印图片,但是生成图片严重失真。
原图:图片说明
生成图片:图片说明

请问哪位大神指导原因,多谢了!

这不是失真,是图片不完整
byte[] arr = new byte[ms1.Length];
这里长度多少
保存到本地文件对比下。

上面的代码可以简化成这样

 using (MemoryStream ms = new MemoryStream(image1))
                {
                    System.Drawing.Image imgold = System.Drawing.Image.FromStream(ms);
                    Bitmap bitmap = new Bitmap(imgold);
                    Graphics graphics = Graphics.FromImage(bitmap);
                                        graphics.SmoothingMode = SmoothingMode.HighQuality;
                    graphics.DrawImage(imgold, 0, 0, imgold.Width, imgold.Height);
                    Font f = new Font("宋体", 10);
                    Brush b = new SolidBrush(Color.Black);
                    string strText = "仅用于申请,他用均无效" + DateTime.Now.ToString();
                    graphics.DrawString(strText, f, b, 10, 10);                  

                    MemoryStream ms1 = new MemoryStream(image1);
                    bitmap.Save(ms1, System.Drawing.Imaging.ImageFormat.Jpeg);

                    return ms1.ToArray();                    
                }            

至于图片失真,上面使用了SmoothingMode.HighQuality,另外你检查下原图片的格式是不是jpeg