0
我必須向服務器發送從相機拍攝的幾個JPEG文件。當然,他們只是通過文件流來做到這一點。我(每個文件)的代碼看起來如下:Android:JPEG的提前結束
struct3.put("type", "image/jpeg");
f = new File(fileName);
FileInputStream fis = new FileInputStream(f);
BufferedInputStream bis = new BufferedInputStream(fis);
byte[] buffer = new byte[(int)f.length()];
bis.read(buffer);
fis.close();
struct3.put("bits", buffer);
畢竟我送一個結構:
Object[] params3 = { bid, login, pass, struct3 };
Object response2 = client.send("my_function", params3);
當我送小文件都是正確的,但是當文件是大我收到「出內存異常「。
我的這個解決方案是壓縮JPEG文件:
struct3.put("type", "image/jpeg");
final Options opts = new Options();
opts.inSampleSize = 2;
Bitmap bitmap = BitmapFactory.decodeFile(fileName, opts);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 70, stream);
byte[] byteArray = stream.toByteArray();
struct3.put("bits", byteArray);
Object[] params3 = { bid, login, pass, struct3 };
Object response2 = client.send("my_function", params3);
但是這種方式產生的在服務器端錯誤: 「JPEG文件過早結束」。
在發送JPEG文件之前,有什麼方法可以糾正嗎? 我知道JPEG應該以EOI結尾(0xff,0xfd)。
如何檢查並進行更正?
這意味着你的代碼沒有壓縮的JPEG文件可能會請你給我們登錄貓報告。 –
由於照片上傳到WordPress而沒有登錄貓報告,只有track是來自gdlib的警告。該警告包含:「JPEG文件過早結束」 – cronik