【发布时间】:2016-10-01 13:56:59
【问题描述】:
我编写了将图像从文件位置转换为 base64 的代码。我可以轻松地将图像从绝对文件位置转换为 base64,例如:C:/Users/Java Engineer/Desktop/test/gallery/magar/Kanuglam.jpg,但我无法从位置转换,例如
.我想从网络服务转换图像以在 android 中使用。
这是代码示例:
/**
* TEST JSON
*/
String convertToJsonArrayWithImageForMovieDetailTest(ResultSet rs) {
System.out.println("I am insied json converter");
JSONArray list = new JSONArray();
JSONObject obj ;
//File file;
File locatedFile;
FileInputStream fileInputStream;
try {
while (rs.next()) {
obj = new JSONObject();
System.out.println("inside RS");
System.out.println("date is there ha ha ");
obj.put("movie_name", rs.getString("name"));
obj.put("movie_gener", rs.getString("type"));
String is_free_stuff = rs.getString("is_free_stuff");
if (is_free_stuff == "no") {
is_free_stuff = "PAID";
} else {
is_free_stuff = "FREE";
}
obj.put("movie_type", is_free_stuff);
//String movie_image = rs.getString("preview_image");
//this does not work
String movie_image = "http://www.hamropan.com/stores/slider/2016-09-10-852311027.jpg";
//this works for me
// file = new File("C:/Users/Java Engineer/Desktop/Nike Zoom Basketball.jpg");
locatedFile = new File(movie_image);
// Reading a Image file from file system
fileInputStream = new FileInputStream(locatedFile);
if (locatedFile == null) {
obj.put("movie_image", "NULL");
} else {
byte[] iarray = new byte[(int) locatedFile.length()];
fileInputStream.read(iarray);
byte[] img64 = com.sun.jersey.core.util.Base64
.encode(iarray);
String imageString = new String(img64);
obj.put("movie_image", imageString);
}
list.add(obj);
}
} catch (Exception e) {
e.printStackTrace();
}
return list.toString();
}
这段代码对我有用,但看起来很慢
public String imageConvertMethod(String url) throws Exception{
ByteArrayOutputStream output = new ByteArrayOutputStream();
try (InputStream input = new URL(url).openStream()) {
byte[] buffer = new byte[512];
for (int length = 0; (length = input.read(buffer)) > 0;) {
output.write(buffer, 0, length);
}
}
byte [] byte_array = output.toByteArray();
byte[] img64 = com.sun.jersey.core.util.Base64
.encode(byte_array);
String imageString = new String(img64);
return imageString;
}
【问题讨论】:
-
你必须先下载文件。
-
废话。而你的帖子告诉了别的东西。
-
我的帖子在说什么? @greenapps
-
它适用于此代码,但速度太慢。
public String lokConvertMethod(String url) throws Exception{ ByteArrayOutputStream output = new ByteArrayOutputStream(); try (InputStream input = new URL(url).openStream()) { byte[] buffer = new byte[512]; for (int length = 0; (length = input.read(buffer)) > 0;) { output.write(buffer, 0, length); } } byte [] byte_array = output.toByteArray(); byte[] img64 = com.sun.jersey.core.util.Base64 .encode(byte_array); String imageString = new String(img64); return imageString; } -
我们应该读一下吗?在您的帖子中发布代码。它现在无法阅读。
标签: java android web-services