大多数程序员都遇到一个问题,就是页面显示图片的问题;一般情况下,只要你在数据库或相关的页面上指定图片的路径,基本上程序就会按照你给出的路径将图片呈现到界面上,而你要做的就是修改图片控件的大小;但是还有一种情况就是,数据库里面根本没有存储图的路径而是存储了将图片的转成byte[] 字节,遇到这样的情况,估计有些人就犯难了,比如我……,当然了,我现在已经解决了这个问题,下面就不废话,直接上成果:
string image=Convert.ToBase64String(byte[] str); //C# 写法
-----------------------------------------------------------------
* 需要引入 import org.apache.commons.codec.binary.Base64; 这个命名空间
string image=Base64.encodeBase64String(byte[] b); //java 写法
这句换就已经将byte[] 转成了图片,如果在不考虑图片类型的情况下,显示成图片现在基本上已经完成了;但有些情况下我们就必须考虑图片的格式问题,所以下面的方法中有获取图片格式的方法:
C# 写法
//需要引入命名空间:
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
public static string GetImgPostFixByBytes(byte[] bytes)
{
Image photo = null;
using (MemoryStream ms = new MemoryStream(bytes))
{
ms.Write(bytes, 0, bytes.Length);
photo = Image.FromStream(ms, true);
}
string postfix = "";
ImageFormat format = photo.RawFormat;
if (format.Equals(ImageFormat.Jpeg))
{
postfix = "jpeg";
}
else if (format.Equals(ImageFormat.Png))
{
postfix = "png";
}
else if (format.Equals(ImageFormat.Bmp))
{
postfix = "bmp";
}
else if (format.Equals(ImageFormat.Gif))
{
postfix = "gif";
}
else if (format.Equals(ImageFormat.Icon))
{
postfix = "icon";
}
return postfix;
}
----------------------------------------------------------------
* Java 写法
//图片转换 byte[]转base64
public static String byte2Base64StringFun(byte[] b){
return Base64.encodeBase64String(b);
}
//根据字节流获取文件的类型
public static String bytesToHexString(byte[] src) {
StringBuilder stringBuilder = new StringBuilder();
if (src == null || src.length <= 0) {
return null;
}
for (int i = 0; i < src.length; i++) {
int v = src[i] & 0xFF;
String hv = Integer.toHexString(v);
if (hv.length() < 2) {
stringBuilder.append(0);
}
stringBuilder.append(hv);
}
return stringBuilder.toString();
}
至此,这个功能才能算是把相关的数据获取到了,接下来我们只要把相关的元素拼接成下面的这个样子赋给,要显示的字段就大功告成了!
C# 写法
string image="data:image/" + GetImgPostFixByBytes(byte[] str) + ";base64," + Convert.ToBase64String(byte[] str);
--------------------------------------------------------
Java 写法
string src="data:image/" + bytesToHexString(byte[] str) + ";base64," + byte2Base64StringFun(byte[] str);
image就是你想要的图片;