开发者

Serializing a bitmap image to a base64?

开发者 https://www.devze.com 2023-02-14 12:45 出处:网络
I\'ve been playing around with the resco API for windows mobile 6: http://www.resco.net/ and one thing they do is serialize bitmap images and base64 encode them in the .resx file, for example like thi

I've been playing around with the resco API for windows mobile 6: http://www.resco.net/ and one thing they do is serialize bitmap images and base64 encode them in the .resx file, for example like this:

<data name="buttonCell2.ImagePressed" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
      iVBORw0KGgoAAAANSUhEUgAAAEMAAAAaCAMAAADblRF+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
      YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAYZQTFRFtgAA////
      wAAAygAA2wAA2AAA0gAAuQAAvQAAsQAAwwAAzgAAxgAA1QAA3wAA4gAAswAArgAA5QAA5wAArAAA6gAA
      nQAA2QAAgAAA/wD/5AAApwAAxwAAugAA4AAAoQAAlQAAqgAAqAAAmgAAwgAAsAAAzQAA6AAA1wAA3gAA
      dQAAfAAAogAAvgAAsgAA/fTprQAAzwAAqwAAfwAAzAAAxAAAkQAAxQAAtAAAtQAA9M6Rz4SEsSoq+PDw
      agAAggAApAAAtDAw//36ZgAAewAAyX5+67uCbgAAdAAAyQkJjAAA+uO8qQYGoRsXtCwqeAAAYwAA1pld
      fCQWZQcEkwAA2qlqtWU/dRgP/fXmnCcnqGU/+d24mwAApQAAqicnjgAA/Pn5/fTneCQVigAA4qtxhx0b
      bAAA/fLkgCYY//38rB4edAcEp2E6owAAjx8UlwAA/ffucgAAcwAA0X94dgAAuXp2cAAAhQAAZQAAngAA
      aAAAnwAAxzAwgiQejQAA6s/PrGpDfx8Ulyx+wgAAASBJREFUOE+l1dVWw1AUBNBzkhYIUigUuUnapO7u
      WHF3d3d31z8nXYsvuGe/zzzOAGNs7fchnG7jkL5aMuIM2OJyWFck4CIpkwfljrlSj5AMtHIJJIWpdgY/
      05G8SfY3c/HLpvw9g5Ntu1lu4iabP8bh/F21yI3cZMfoCowoGUc9gSPTByGnL2ghCPoQQopoIhER7jZV
      M4mKcHuZrSPJIjxpngoSD8Lwa7SGJIpw5LaLJHaE7muoJQGEN71QTVJA6F+QBBIJ4SVnrSKxIsx8OStJ
      nAjz+0qRa8P+Q8UJhL1nLdZAEOs9hYsBd8IrcfMmOo6BfY5FbFZuts4dY5NnD3OaK2XjknKdfe8aHWzo
      cVXfaOGyNdh1U/4Gw3ocOcXL8T+dxW1D92ffagAAAABJRU5ErkJggg==
    </value>
  </data>

And it gets loaded up like so:

this.buttonCell1.ImagePressed = ((System.Drawing.Image)(resources.GetObject("but开发者_Go百科tonCell1.ImagePressed")));

When I base 64 decode the value I get a .bin which I can load in paint and it looks like the button image.

My quesiton is: how do I serialize a bitmap image (or any image really) into text and then base64 encode it so I can add it to the resx file in a Windows Mobile project.


You could do something like this. Substitute the first row for a more valid one :)

var myImage = new Bitmap(50,50);
var ms = new MemoryStream();
myImage.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
byte[] data = new byte[ms.Length];
ms.Read(data, 0, data.Length);

var base64ConvertedString = Convert.ToBase64String(data);


public BitmapImage Base64ToImage(string base64String)
    {
        byte[] imageBytes = Convert.FromBase64String(base64String);
        MemoryStream ms = new MemoryStream(imageBytes, 0,imageBytes.Length);
        BitmapImage image2 = new BitmapImage();
        image2.SetSource(ms);
        ms.Close();
        return image2;
    }

call the function like this,

        BitmapImage test = new BitmapImage();
        test = Base64ToImage(split[3].ToString());
        ImageBrush berriesBrush = new ImageBrush();
        berriesBrush.ImageSource = test;
        button1.Backgroud=berriesBrush;
0

精彩评论

暂无评论...
验证码 换一张
取 消