java和asp.net 分别将同一张图片转换成base64位后,大小不一样,无法通用?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java和asp.net 分别将同一张图片转换成base64位后,大小不一样,无法通用?相关的知识,希望对你有一定的参考价值。

同一张图片转换成base64后,存入txt文档。java转换成的txt文档有77.7K,asp.net转换成的txt文档有1.57MB,图片本身大小为1.18MB。是哪里出来问题啊,而且java转换成的base64位数据,在asp.et中无法还原成图片。
java: 图片转换成base64
public static String getImageStr(String imgFilePath)
byte[] data = null;

// 读取图片字节数组
try
InputStream in = new FileInputStream(imgFilePath);
data = new byte[in.available()];
in.read(data);
in.close();
catch (IOException e)
e.printStackTrace();


// 对字节数组Base64编码
BASE64Encoder encoder = new BASE64Encoder();
// 返回Base64编码过的字节数组字符串
return encoder.encode(data);

asp.net base64转换成图片
string dt = DateTime.Now.ToString("yyMMddhhmmss");
byte[] bytes = Convert.FromBase64String(input);
System.IO.FileStream outputStream = new System.IO.FileStream(Server.MapPath("~/ImagesL/") + dt + ".jpg", System.IO.FileMode.Create);
for (int i = 0; i < bytes.Length; ++i)

if (bytes[i] < 0)
// 调整异常数据
bytes[i] = Convert.ToByte(Convert.ToInt32(bytes[i])+256);


outputStream.Write(bytes, 0, bytes.Length);
outputStream.Close();
intput是接收到的base64字符流

要使用Oracle数据库实例,有两种方式来实现。
一个是使用CLOB字段Base64编码后的图像存储,WEB应用访问字段(String对象),使用Base64编码,然后输出。

有一个二进制大对象字段使用的Blob,直接存储对象字节流可以是任何对象,如图片,视频,文档等,然后WEB应用越来越重最初建为一个字节Blob对象流对象。
但无论哪种方式在非洲的业务发展是真的有必要在此情况下,绝对不推荐,因为数据是更大的访问数据库的性能开销更高的应用效率会比较低后续系统的SQL脚本不能只通过开展,由Oracle DMP地的。因为无论是长,CLOB或BLOB,不是一个简单的SQL插入,推荐的做法是存储文件数据库VARCHAR2领域的WEB容器相对路径(图片,视频,文档等),WEB应用程序只能通过需要访问链接的对象的路径。追问

?我现在是java程序准确说是安卓程序将图片转换成base64的字符流后存入txt文档中,而后asp.net程序从txt文档中读取base64位字符流在还原成图片。跟Oracle有神马关系?

参考技术A Java的byte是-127到+127,而C#的是[0,255]本回答被提问者采纳

java和asp.net 分别将同一张图片转换成base64位后,大小不一样,无法通用?

同一张图片转换成base64后,存入txt文档。java转换成的txt文档有77.7K,asp.net转换成的txt文档有1.57MB,图片本身大小为1.18MB。是哪里出来问题啊,而且java转换成的base64位数据,在asp.et中无法还原成图片。
java: 图片转换成base64
public static String getImageStr(String imgFilePath)
byte[] data = null;

// 读取图片字节数组
try
InputStream in = new FileInputStream(imgFilePath);
data = new byte[in.available()];
in.read(data);
in.close();
catch (IOException e)
e.printStackTrace();


// 对字节数组Base64编码
BASE64Encoder encoder = new BASE64Encoder();
// 返回Base64编码过的字节数组字符串
return encoder.encode(data);

asp.net base64转换成图片
string dt = DateTime.Now.ToString("yyMMddhhmmss");
byte[] bytes = Convert.FromBase64String(input);
System.IO.FileStream outputStream = new System.IO.FileStream(Server.MapPath("~/ImagesL/") + dt + ".jpg", System.IO.FileMode.Create);
for (int i = 0; i < bytes.Length; ++i)

if (bytes[i] < 0)
// 调整异常数据
bytes[i] = Convert.ToByte(Convert.ToInt32(bytes[i])+256);


outputStream.Write(bytes, 0, bytes.Length);
outputStream.Close();
intput是接收到的base64字符流

要使用Oracle数据库实例,有两种方式来实现。
一个是使用CLOB字段Base64编码后的图像存储,WEB应用访问字段(String对象),使用Base64编码,然后输出。

有一个二进制大对象字段使用的Blob,直接存储对象字节流可以是任何对象,如图片,视频,文档等,然后WEB应用越来越重最初建为一个字节Blob对象流对象。
但无论哪种方式在非洲的业务发展是真的有必要在此情况下,绝对不推荐,因为数据是更大的访问数据库的性能开销更高的应用效率会比较低后续系统的SQL脚本不能只通过开展,由Oracle DMP地的。因为无论是长,CLOB或BLOB,不是一个简单的SQL插入,推荐的做法是存储文件数据库VARCHAR2领域的WEB容器相对路径(图片,视频,文档等),WEB应用程序只能通过需要访问链接的对象的路径。追问

?我现在是java程序准确说是安卓程序将图片转换成base64的字符流后存入txt文档中,而后asp.net程序从txt文档中读取base64位字符流在还原成图片。跟Oracle有神马关系?

参考技术A Java的byte是-127到+127,而C#的是[0,255]本回答被提问者采纳

以上是关于java和asp.net 分别将同一张图片转换成base64位后,大小不一样,无法通用?的主要内容,如果未能解决你的问题,请参考以下文章

asp.net(C#)怎样将listview中的radiobutton设置成互斥?

在asp.net中,加载图片的相对路径和绝对路径分别用啥

ASP.net 如何实现上传图片的调整和裁减

asp.net将PDF文件转换成图片,并且在网页上显示

sqlserver 的图片怎么读取? 怎么存储 用asp.net 上传的

WPF备忘录WPF图片资源路径介绍