Can someone tell me the code to convert image into base64 string. i write the below code not getting proper result .
谁能告诉我把图像转换成base64字符串的代码吗?我写下面的代码没有得到正确的结果。
String filepath = "/sdcard/Image/image1.jpg";
File imagefile = new File(filepath);
FileInputStream fis = null;
try {
fis = new FileInputStream(imagefile);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Bitmap bm = BitmapFactory.decodeStream(fis);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.JPEG, 100 , baos);
byte[] b = baos.toByteArray();
String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);
Result im getting is not in proper format it ends with 3 dots ...
结果我得到的不是正确的格式它以3点结束…
Byte array im getting ends with 3 dots ...
字节数组以3点结束…
[-1, -40, -1, -32, 0, 16, 74, 70, 73, 70, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, -1, -37, 0, 67, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -37, 0, 67, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -64, 0, 17, 8, 1, 64, 0, -16, 3, 1, 34, 0, 2, 17, 1, 3, 17, 1, -1, -60, 0, 31, 0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, -60, 0, -75, 16, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 125, 1, 2, 3, 0, 4, 17, 5, 18, 33, 49, 65, 6, 19, 81, 97, 7, 34, 113, 20, 50, -127, -111, -95, 8, 35, 66, -79, -63, 21, 82, -47, -16, 36, 51, 98, 114, -126, 9, 10, 22, 23, 24, 25, 26, 37, 38, 39, 40, 41, 42, 52, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, -125, -124, -123, -122, -121, -120, -119, -118, -110, -109, -108, -107, -106, -105, -104, -103, -102, -94, -93, -92, -91, -90, -89, -88, -87, -86, -78, -77, -76, -75, -74, -73, -72, -71, -70, -62, -61, -60, -59, -58, -57, -56, -55, -54, -46, -45, -44, -43, -42, -41, -40, -39, -38, -31, -30, -29, -28, -27, -26, -25, -24, -23, -22, -15, -14, -13, -12, -11, -10, -9, -8, -7, -6, -1, -60, 0, 31, 1, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, -60, 0, -75, 17, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 119, 0, 1, 2, 3, 17, 4, 5, 33, 49, 6, 18, 65, 81, 7, 97, 113, 19, 34, 50, -127, 8, 20, 66, -111, -95, -79, -63, 9, 35, 51, 82, -16, 21, 98, 114, -47, 10, 22, 36, 52, -31, 37, -15, 23, 24, 25, 26, 38, 39, 40, 41, 42, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, -126, -125, -124, -123, -122, -121, -120, -119, -118, -110, -109, -108, -107, -106, -105, -104, -103, -102, -94, -93, -92, -91, -90, -89, -88, -87, -86, -78, -77, -76, -75, -74, -73, -72, -71, -70, -62, -61, -60, -59, -58, -57, -56, -55, -54, -46, -45, -44, -43, -42, -41, -40, -39, -38, -30, -29, -28, -27, -26, -25, -24, -23, -22, -14, -13, -12, -11, -10, -9, -8, -7, -6, -1, -38, 0, 12, 3, 1, 0, 2, 17, 3, 17, 0, 63, 0, -2, 55, -96, -76, 100, 41, 28, -111, -96, 46, -119, 50, 16, -79, -78, 60, 82, 2, -24, -24, -56, 28, 72, -82, -84, 14, -32, 91, 57, 57, 32, -115, -75, -83, 109, 102, -84, 91, 116, 104, 62, 98, 48, 85, 114, 112, 100, 3, -8, -77, -43, 65, 35, 29, 54, -110, 9, 14, 79, 23, -16, -9, -58, -87, -31, -23, -51, -114, -79, 4, 87, -102, 52, -78, 42, -77, 77, 2, 75, 62, -98, 36, 117, 13, 53, -69, -19, 50, -120, -14, -101, -27, -122, 51, -109, -110, -15, 41, 125, -55, 39, -40, -98, 23, -45, -4, 55, -30, 27, 8, -38, -34, 11, 107, -44, 107, -107, 72, -18, 34, 75, 89, 101, 116, 36, 75, 27, -106, 80, -53, 30, -27, 32, 49, 92, -122, 80, -39, -52, -65, 53, 124, 116, -16, 110, 28, -51, -22, -106, -51, 39, 103, -85, 87, -14, -8, 123, -11, 119, 109, -92, 121, -76, 49, -111, 106, -17, 118, -105, -90, -22, -18, -51, -89, -25, 109, -10, -46, -41, 103, -126, 91, -38, -94, -85, 110, -120, 12, 54, 7, -55, -114, -101, -3, -119, 3, 104, 28, -25, -44, 2, 48, -39, -47, -122, -51, 112, -37, 17, 71, 0, 16, 20, 1, -116, -65, 25, 62, -92, 100, -109, -58, 119, 100, -28, -28, -3, -109, 101, -32, 111, 14, 61, -66, 95, 65, -79, -109, -26, 84, 57, -75, -116, 56, -35, 51, -122, 98, 66, 70, 66, -87, -25, 110, 114, -87, -72, -86, 2, 49, 93, 61, -81, -61, 31, 8, 58, 21, 109, 2, -60, -107, -57, 43, 27, 12, -106, 103, 39, 44, 8, 99, -128, 120, 29, 66, -32, 12, -107, -7, -79, 88, 121, 61, -91, 123, 37, -41, -94, 106, -35, 63, -90, -41, 84, -17, -46, -79, 84, -19, -83, -42, -35, 63, -59, -25, -27, -75, -5, -85, -67, 89, -7, -17, -81, -8, 70, -49, 94, -77, 49, 58, 8, 110, -112, 31, -78, 93, 32, 27, -30, -109, 46, 118, -66, 6, 100, -115, -103, 70, -12, 39, 118, 55, 0, -63, -64, 39, -61, 111, 52, -21, -35, 30, -12, 89, 95, 90, 70, -109, 90, 72, -82, 85, -30, 30, 85, -60, 32, -66, 26, 55, 0, 52, -80, -54, -96, 16, -63, -125, 114, 87, 34, 84, 106, -3, -109, -75, -8, 57, -32, -126, -30, 71, -48, 109, -9, 22, 24, 6, -25, 80, 84, 57, 50, 19, -14, 37, -54, -115, -72, 24, 94, 2, -125, -114, 114, -96, -41, 61, -29, -113, -39, -97, -31, -1, 0, -116, 116, 59, -69, 59, 27, 67, -93, -21, 17, -62, 100, -46, -75, 40, -26, -71, -105, -20, 119, 96, 57, -37, 44, 18, -36, 58, -49, 103, 113, -64, -70, -124, -31, -54, -108, 120, -27, 73, 86, 22, -81, 71, 11, 57, -46, -117, -89, 55, 120, -69, 90, -41, -70, -42, 87, -66, -119, 90, -38, -37, 93, -35, -84, -73, -31, -59, 58, 53, -105, 52, 18, -25, -70, -43, -11, -43, 119, -12, -35, 121, 95, 85, -81, -29, -35, -18, -98, 86, 89, -54, 36, 41, 21, -68, 74, -32, -85, -57, 25, 49, -76, -125, 110, 16, -112, -46, 76, 60, -59, 14, -86, -90, 77, -120, -52, 81, -43, 36, -112, -25, 27, 72, -38, 41, -92, 18, 29, -31, -45, 108, 126, 81, 6, 72, -56, -108, -68, -103, 14, 66, -104, -10, -95, -37, -50, 67, -71, -36, 54, 18, 125, -109, -57, 30, 13, -15, 47, -125, 124, 67, 123, -31, -49, 24, 88, -83, -83, -12, 46, -78, 69, 40, -116, 125, -98, -14, -38, 77, -48, -61, -88, 88, 79, 18, -60, 39, -79, -106, 52, -52, 126, 90, -97, 46, 85, -110, -34, 72, -31, -71, 91, -104, -85, -128, -109, 79, -98, -56, -83, -62, 5, 56, -108, -7, 44, 85, 27, -26, -122, 70, -36, 93, 28, -78, -100, 48, 25, 87, -32, -126, 87, 44, -124, -77, 122, 42, 55, -115, -42, -82, -17, -81, 75, -7, -11, -74, -66, 123, 110, 121, -100, -42, -109, -117, -46, -38, 126, -114, -9, 122, 126, 127, 61, 78, 42, 61, -88, -50, 48, 50, -96, -20, -32, 16, -60, 49, -57, 94, -128, -125, -44, 100, -6, -100, 19, 90, -38, 124, -78, -38, -50, -109, -37, 22, 89, -61, -58, -54, -15, 41, 51, 44, -118, -25, 97, -117, -111, -110, 27, -26, 10, 78, 9, 37, 65, -36, 55, 30, -81, -5, 4, -21, 17, 92, -21, 49, 62, -97, 98, -86, -115, 53, -22, 8, -38, -34, 8, -89, 15, 34, -104, 45, -31, 70, -107, -53, -56, -116, -73, 9, 20, 106, 124, -46, -14, 45, -72, 103, -115, -31, 94, 102, 21, -114, 53, -99, -36, -54, -78, -57, -27, -76, 5, 2, -107, 47, -26, 48, 62, 97, 103, 13, 24, -40, 55, 35, 40, 98, 31, 106, -107, 1, -117, -44, 90, -21, -110, -41, -69, -73, -101, -69, 106, -33, -7, 43, -13, -13, -22, -9, -91, 86, 84, -99, -42, -85, 71, 111, -101, 77, -4, -41, 79, 61, 118, 76, -6, 83, -64, -2, 38, -121, 92, -119, 109, 47, -46, 40, 53, 63, 37, 89, 11, 5, 72, -75, 8, -47, -103, 90, 107, 115, -48, -56, -90, 51, -10, -120, 65, 37, 25, 89, -108, 21, -13, 21, 125, 122, -46, -34, 33, -100, -94, -87, -62, 14, 80, 99, -17, 74, 7, 108, -29, -100, 12, -14, 73, 61, -41, 39, -31, -51, 47, 81, -72, -73, -106, 48, 37, -100, 71, 4, -53, 50, 8, -27, 43, 44, 50, -110, 51, 37, -69, -100, -108, 114, 85, 11, 1, -14, -74, 62, 98, 88, 43, 15, -45, 127, -39, -105, 79, -8, 95, -15, 94, 59, 127, 11, -8, -53, 82, -41, 52, 47, 24, -55, 10, -49, -90, -51, 5, -10, -101, 5, -121, -120, -83, 84, 72, -57, -20, 11, 119, -89, -54, 63, -76, 97, 69, 111, -76, -39, 2, -19, 49, 13, 61, -85, 21, 55, 86, -15, -8, 88, -84, -79, -58, 115, -100, 91, -77, 122, -57, -86, -43, -66, -49, 116, -81, -9, 106, -37, -69, -6, 124, 6, 105, 79, -39, -72, -44, 87, -27, 105, 38, -76, 111, -43, 53, -39, 59, -83, -43, -45, -69, 91, -16, -55, -90, -58, -56, -89, -55, 66, 64, 93, -89, 106, -112, 126, -10, 0, 59, 112, 71, 10, 121, -25, 56, 57, -56, 10, 121, 127, 23, 124, 58, -80, -15, 85, -117, 43, 69, 21, -75, -12, 104, 90, -38, -19, 33, 92, -85, -110, -33, -70, -103, 84, 102, 72, 36, 35, 59, 9, -7, 10, -121, 83, -71, 73, -81, -43, 24, 127, 100, 79, 6, -49, 111, -74, -45, -60, 62, 35, -126, 77, -111, -76, 111, 51, 105, -110, -123, 37, 100, -36, -78, 68, -70, 117, -66, -16, 73, 12, 0, 117, 117, 1, -108, -106, 37, -98, -81, -89, -20, 113, -31, -13, 17, -14, -68, 75, -84, 76, -25, -27, -115, -28, -114, -59, 99, 12, 60, -44, 27, -31, 88, 67, 48, -32, 49, 38, 85, -34, 89, -41, 112, 35, 121, -32, -93, 71, 19, 66, -85, -87, 7, -42, 43, -15, 94, 111, 126, -34, -73, 76, -17, -87, -104, 96, -22, -46, -107, 41, -87, 114, -55, 89, -69, 59, -17, 117, 107, 54, -109, 77, 43, 125, -51, -37, -103, -53, -7, -16, -43, 124, 55, 125, -94, -34, -36, 105, -6, -115, -89, -109, 52, 7, 105, 44, -124, -84, -86, 90, 93, -78, -62, -37, 113, 36, 114, 42, -18, 12, 56, 25, 32, -31, -127, 90, -65, -31, -35, 86, -21, -61, -9, 73, 52, 39, -52, 70, 32, 50, -80, -54, 58, -125, -13, 71, 32, 99, -62, -28, 3, 25, 31, 50, -98, -8, -36, 91, -9, 23, -57, 63, -80, 47, -122, -4, 93, -91, -49, 108, 60, 85, -88, -39, 107, 16, 71, 112, -38, 109, -11, -58, -107, 103, 36, 81, 92, 108, -109, -55, 91, -119, 32, -103, 100, -106, -51, -91, 8, 46, 4, 100, -4, -123, -34, 21, 18, -18, -49, -29, -49, -60, -81, -123, -34, 45, -8, 83, -30, -99, 83, -63, -34, 50, -46, 31, 77, -43, 44, 37, 64, 80, -30, 75, 107, -69, 103, 51, 8, 117, 13, 58, -17, -124, -68, -80, -69, 68, 15, 5, -60, 120, 5, -119, -118, 84, 75, -120, -26, -116, 125, 69, 26, -85, 23, 67, -39, -44, 75, -98, -47, 82, -113, 71, 119, 56, -20, -45, -20, -92, -99, -19, -75, -35, -36, 91, -7, 106, -109, 88, 90, -41, -94, -17, 11, -90, -98, -87, -39, 59, -23, -82, -6, 95, -43, 110, -9, 61, -105, -61, -102, -123, -122, -75, 101, 29, -35, -80, 67, -57, -17, -94, 1, 75, -60, -37, -100, 20, 113, -116, -16, -33, 50, -100, 96, -85, 100, -74, 0, -49, 101, 22, -97, 1, 37, -74, 38, 24, 115, -75, 87, 29, 91, -87, 11, -23, -44, 114, 121, 25, -28, 12, -4, -103, -31, -97, 17, -35, -8, 126, -11, 39, -123, -63, -119, 54, -58, -47, -53, -111, 28, -111, 101, -127, -118, 80, -93, -25, 80, 71, -53, 38, 12, -120, 74, -112, -27, 70, 43, -11, 7, -31, 7, -63, -115, 59, -29, 55, -125, -94, -15, 63, -124, 124, 111, -90, 77, -121, -14, 117, 93, 26, 93, 54, 84, -43, 52, 107, -35, -68, 90, 94, -94, -33, -70, -122, 108, 9, 109, -26, 5, -83, -18, -96, 127, 58, 9, 100, 10, -32, 124, -50, 55, 45, -85, 66, -92, -1...
and base64 string im getting also ends with 3 dots which is not proper
而base64字符串i也会以3个不合适的点结束
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...
but when i convert image from my drawable resource im getting proper base64 string
但是当我从可绘制资源转换图像时,我得到了合适的base64字符串
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] byteArray = stream.toByteArray();
String testa = Base64.encodeBytes(byteArray);
can any buddy tell me what im doing in above code Thanks in advance
有朋友能提前告诉我我在上面的代码里做什么吗
3 个解决方案
#1
1
I dare say that dots on the end are just placeholder for display of values too long for display / printout as byte array. There is nothing wrong with your base64 encoding code, but why are you recording JPEG? Just read your file in byte array ( not in one gulp but chunked, I would choose buffer size to be multiple of 4 ), convert it on the fly and write it into output stream.
我敢说,末端的点只是显示值的占位符,对于以字节数组形式显示/输出的值来说太长了。base64编码没有问题,但是为什么要记录JPEG呢?只需以字节数组的形式读取文件(不是一口气读取,而是分段读取,我将选择缓冲区大小为4的倍数),动态地将其转换为输出流。
PS: reading while files are in android is bad practice, as memory is very constrained - you will have bad performance.
PS:在android中读取文件是不好的做法,因为内存非常有限——您将会有很差的性能。
Here is the sample code but I'm too lazy to compile or debug it:
下面是示例代码,但我懒得编译或调试它:
while(( size = inputStream.read(inputBuffer)) != -1 ) {
// arraycopy only if necessary
outBuf = Base64.encodeBytes(System.arrayCopy(inputBuffer...))
outputStream.write(outBuf);
}
This is not the most optimal solution though, as arraycopy potentially copies data ( but this has to be done on last chunk )
这并不是最优的解决方案,因为arraycopy可能复制数据(但这必须在最后一块上完成)
#2
2
Try this.
试试这个。
File imageFile = new File("/sdcard/gallery_photo_4.jpg");
Bitmap bitmap = BitmapFactory.decodeFile(imageFile.getAbsolutePath());
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 90, stream);
byte[] image = stream.toByteArray();
String img_str = Base64.encodeToString(image, 0);
#3
0
// uris[] - the file uris array
if (uris != null && !uris.isEmpty()) {
for (int i = 0; i < uris.size(); i++) {
// current image's uri
// Uri u = Uri.fromFile(filepath) - YOUR situation
Uri u = uris.get(i);
if (u != null) {
System.gc();
InputStream is = null;
byte[] data = null;
try {
is = mContentResolver.openInputStream(u);
// converting to byteArray / my Procedure
data = getFileBytes(is);
} catch (Exception ex) {
ex.printStackTrace();
}
u = null;
// converting bytes to Base64
String data_string =
Base64.encodeToString(data, Base64.URL_SAFE);
// my pairs for transfer, may not use
if( ! data_string.trim().equals("")){
nameValuePairs.add(
new BasicNameValuePair(
"data[file_" + i + "]",
data_string
)
);
}
data_string = null;
}
}
}
/* convert InputStream to Byte array procedure */
public byte[] getFileBytes(InputStream ios) throws IOException {
ByteArrayOutputStream ous = null;
try {
byte[] buffer = new byte[4096];
ous = new ByteArrayOutputStream();
int read = 0;
while ((read = ios.read(buffer)) != -1)
ous.write(buffer, 0, read);
} finally {
try {
if (ous != null)
ous.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
if (ios != null)
ios.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
return ous.toByteArray();
}
Also check where do you see you base64. If debug - it will be cut!
还要看看你在哪儿看棒球。如果调试-它将被切断!
Ok. Try my code to decode image into MPx you want. Here is 1 megapixel:
好的。尝试我的代码把图像解码成你想要的MPx。这是1像素:
Using:
使用:
minimizeBitmap(filePath, 1000000, true)
My Code:
我的代码:
public Bitmap minimizeBitmap(String aPath, int aMps, boolean aSaveOrNot) throws FileNotFoundException {
Uri aUri = null;
{
File f = new File(aPath);
aUri = Uri.fromFile(f);
f = null;
System.gc();
}
InputStream in = mContentResolver.openInputStream(aUri);
try {
final int IMAGE_MAX_SIZE = aMps;
// Decode image size
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeStream(in, null, o);
in.close();
int scale = 1;
while ((o.outWidth * o.outHeight) * (1 / Math.pow(scale, 2)) > IMAGE_MAX_SIZE) {
scale++;
}
Bitmap b = null;
in = mContentResolver.openInputStream(aUri);
aUri = null;
if (scale > 1) {
scale--;
o = new BitmapFactory.Options();
o.inSampleSize = scale;
b = BitmapFactory.decodeStream(in, null, o);
int height = b.getHeight();
int width = b.getWidth();
double y = Math.sqrt(IMAGE_MAX_SIZE
/ (((double) width) / height));
double x = (y / height) * width;
Bitmap scaledBitmap = Bitmap.createScaledBitmap(b, (int) x, (int) y, true);
b.recycle();
b = scaledBitmap;
if (aSaveOrNot) {
FileOutputStream out = new FileOutputStream(_fileName);
b.compress(Bitmap.CompressFormat.JPEG, 85, out);
out.close();
}
System.gc();
return b;
} else {
b = BitmapFactory.decodeStream(in);
}
in.close();
//
// Log.i("junr", "out getBitmap");
// Log.i("junr", String.valueOf(Environment.getExternalStorageDirectory()));
if (aSaveOrNot) {
FileOutputStream out = new FileOutputStream(_fileName);
b.compress(Bitmap.CompressFormat.JPEG, 85, out);
out.close();
}
return b;
} catch (IOException e) {
Log.e("junr", e.getMessage(),e);
return null;
}
}
#1
1
I dare say that dots on the end are just placeholder for display of values too long for display / printout as byte array. There is nothing wrong with your base64 encoding code, but why are you recording JPEG? Just read your file in byte array ( not in one gulp but chunked, I would choose buffer size to be multiple of 4 ), convert it on the fly and write it into output stream.
我敢说,末端的点只是显示值的占位符,对于以字节数组形式显示/输出的值来说太长了。base64编码没有问题,但是为什么要记录JPEG呢?只需以字节数组的形式读取文件(不是一口气读取,而是分段读取,我将选择缓冲区大小为4的倍数),动态地将其转换为输出流。
PS: reading while files are in android is bad practice, as memory is very constrained - you will have bad performance.
PS:在android中读取文件是不好的做法,因为内存非常有限——您将会有很差的性能。
Here is the sample code but I'm too lazy to compile or debug it:
下面是示例代码,但我懒得编译或调试它:
while(( size = inputStream.read(inputBuffer)) != -1 ) {
// arraycopy only if necessary
outBuf = Base64.encodeBytes(System.arrayCopy(inputBuffer...))
outputStream.write(outBuf);
}
This is not the most optimal solution though, as arraycopy potentially copies data ( but this has to be done on last chunk )
这并不是最优的解决方案,因为arraycopy可能复制数据(但这必须在最后一块上完成)
#2
2
Try this.
试试这个。
File imageFile = new File("/sdcard/gallery_photo_4.jpg");
Bitmap bitmap = BitmapFactory.decodeFile(imageFile.getAbsolutePath());
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 90, stream);
byte[] image = stream.toByteArray();
String img_str = Base64.encodeToString(image, 0);
#3
0
// uris[] - the file uris array
if (uris != null && !uris.isEmpty()) {
for (int i = 0; i < uris.size(); i++) {
// current image's uri
// Uri u = Uri.fromFile(filepath) - YOUR situation
Uri u = uris.get(i);
if (u != null) {
System.gc();
InputStream is = null;
byte[] data = null;
try {
is = mContentResolver.openInputStream(u);
// converting to byteArray / my Procedure
data = getFileBytes(is);
} catch (Exception ex) {
ex.printStackTrace();
}
u = null;
// converting bytes to Base64
String data_string =
Base64.encodeToString(data, Base64.URL_SAFE);
// my pairs for transfer, may not use
if( ! data_string.trim().equals("")){
nameValuePairs.add(
new BasicNameValuePair(
"data[file_" + i + "]",
data_string
)
);
}
data_string = null;
}
}
}
/* convert InputStream to Byte array procedure */
public byte[] getFileBytes(InputStream ios) throws IOException {
ByteArrayOutputStream ous = null;
try {
byte[] buffer = new byte[4096];
ous = new ByteArrayOutputStream();
int read = 0;
while ((read = ios.read(buffer)) != -1)
ous.write(buffer, 0, read);
} finally {
try {
if (ous != null)
ous.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
if (ios != null)
ios.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
return ous.toByteArray();
}
Also check where do you see you base64. If debug - it will be cut!
还要看看你在哪儿看棒球。如果调试-它将被切断!
Ok. Try my code to decode image into MPx you want. Here is 1 megapixel:
好的。尝试我的代码把图像解码成你想要的MPx。这是1像素:
Using:
使用:
minimizeBitmap(filePath, 1000000, true)
My Code:
我的代码:
public Bitmap minimizeBitmap(String aPath, int aMps, boolean aSaveOrNot) throws FileNotFoundException {
Uri aUri = null;
{
File f = new File(aPath);
aUri = Uri.fromFile(f);
f = null;
System.gc();
}
InputStream in = mContentResolver.openInputStream(aUri);
try {
final int IMAGE_MAX_SIZE = aMps;
// Decode image size
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeStream(in, null, o);
in.close();
int scale = 1;
while ((o.outWidth * o.outHeight) * (1 / Math.pow(scale, 2)) > IMAGE_MAX_SIZE) {
scale++;
}
Bitmap b = null;
in = mContentResolver.openInputStream(aUri);
aUri = null;
if (scale > 1) {
scale--;
o = new BitmapFactory.Options();
o.inSampleSize = scale;
b = BitmapFactory.decodeStream(in, null, o);
int height = b.getHeight();
int width = b.getWidth();
double y = Math.sqrt(IMAGE_MAX_SIZE
/ (((double) width) / height));
double x = (y / height) * width;
Bitmap scaledBitmap = Bitmap.createScaledBitmap(b, (int) x, (int) y, true);
b.recycle();
b = scaledBitmap;
if (aSaveOrNot) {
FileOutputStream out = new FileOutputStream(_fileName);
b.compress(Bitmap.CompressFormat.JPEG, 85, out);
out.close();
}
System.gc();
return b;
} else {
b = BitmapFactory.decodeStream(in);
}
in.close();
//
// Log.i("junr", "out getBitmap");
// Log.i("junr", String.valueOf(Environment.getExternalStorageDirectory()));
if (aSaveOrNot) {
FileOutputStream out = new FileOutputStream(_fileName);
b.compress(Bitmap.CompressFormat.JPEG, 85, out);
out.close();
}
return b;
} catch (IOException e) {
Log.e("junr", e.getMessage(),e);
return null;
}
}