locked
Adding text to Image - Byte[] RRS feed

  • Question

  • User1610713445 posted

    I have an image in byte[] format - about to be sent to a website.

    I need to add a small caption to the image. I managed to get the Image into a Graphics format, and added the text. Problem is - how do I get it back to a byte[]?


    private byte[] addText(byte[] filearray, string textToAdd)
            {
                MemoryStream ms = new MemoryStream(filearray, 0, filearray.Length);
                ms.Write(filearray, 0, filearray.Length);
                Image newImage = Image.FromStream(ms);
                Graphics g = Graphics.FromImage(newImage);
                g.DrawString(textToAdd, new Font("Arial", 10), Brushes.White, new PointF(0, 0));
    
                
            }


    Wednesday, December 9, 2009 4:50 AM

Answers

  • User-263151482 posted

    byte[] newBytes = imageToByteArray(newImage) ;


    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Monday, December 14, 2009 12:00 PM

All replies

  • User-263151482 posted

    public byte[] imageToByteArray(System.Drawing.Image imageIn)
    {
     MemoryStream ms = new MemoryStream();
     imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
     return  ms.ToArray();
    }


    Wednesday, December 9, 2009 7:07 AM
  • User1610713445 posted

    That's imageToByteArray


    I need GraphicsToByteArray.


    Wednesday, December 9, 2009 3:37 PM
  • User1610713445 posted

    Not possible?


    Thursday, December 10, 2009 2:59 AM
  • User-263151482 posted

    You just pass it the image that you created the graphics from and the text will be in the image.

    Friday, December 11, 2009 2:33 AM
  • User1610713445 posted

    Thanks.

    Not sure how to do that though. I currently have:

      MemoryStream ms = new MemoryStream(filearray, 0, filearray.Length);  
                 ms.Write(filearray, 0, filearray.Length);  
                 Image newImage = Image.FromStream(ms);  
                 Graphics g = Graphics.FromImage(newImage);  
                 g.DrawString(textToAdd, new Font("Arial", 10), Brushes.White, new PointF(0, 0)); 



    Friday, December 11, 2009 10:52 PM
  • User-263151482 posted

    byte[] newBytes = imageToByteArray(newImage) ;


    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Monday, December 14, 2009 12:00 PM