Я хочу получить изображение JPEG из входного сокета в Android. Могу ли я использовать метод Bitmap и сразу конвертировать поток ввода в JPG или преобразовать входной поток в массив байтов, а затем преобразовать его в JPG?Не удается найти изображение JPEG из входного сокета в Android
Код, который я на самом деле пытается это:
private final BluetoothSocket mmBTSocket;
private final InputStream mmBTInStream;
private final OutputStream mmBTOutStream;
public ConnectedThread(BluetoothSocket socket) {
Log.d(BTTAG, "create ConnectedThread");
mmBTSocket = socket;
InputStream tmpIn = null;
OutputStream tmpOut = null;
// Get the BluetoothSocket input and output streams
try {
tmpIn = socket.getInputStream();
tmpOut = socket.getOutputStream();
} catch (IOException e) {
Log.e(BTTAG, "temp sockets not created", e);
}
mmBTInStream = tmpIn;
mmBTOutStream = tmpOut;
}
public void run() {
Log.i(BTTAG, "BEGIN mBTConnectedThread");
byte[] inBTBuffer = new byte[1024];
boolean BTFileEndOne = false;
byte[] mBTimageBuffer = new byte[15360]; // 15KB reserved
int bytes;
bytes = mmBTInStream.read(inBTBuffer);
for (int i = 0; i < bytes; i++) {
mBTimageBuffer[mBTfileIndex] = inBTBuffer[i];
mBTfileIndex++;
// start = System.currentTimeMillis();
// Log.i(BTTAG, bytes+"="+String.format("%02X",
// inBTBuffer[i]));
if (i > 0) {
if (inBTBuffer[i] == (byte) 0xD9) {
BTFileEndOne = true;
Log.i(BTTAG, "BTFileEndOne = true");
if (inBTBuffer[i - 1] == (byte) 0xFF) {
//if (SaveImagetoSD() == true) {
//byte[] readBuf = (byte[]) msg.obj;
Bitmap bitmap = BitmapFactory.decodeStream(mmBTInStream);
bitmap.compress(CompressFormat.JPEG, 80, mmBTOutStream);
String writeTo = new File(Environment.getExternalStorageDirectory()+ File.separator + "motoduino.jpg") .toString();
FileOutputStream output = null;
try {
output = new FileOutputStream(writeTo);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}`
Похоже, что из кода mmBTinStream используется для отправки более одного файла, поэтому, к сожалению, BitmapFactory.decodeStream (mmBTinStream) не будет работать, так как он должен видеть файл jpg или png, как это было бы в виде файла , Сначала вам нужно сохранить байты в файл таким образом, чтобы вы также могли проверить, что оно не было повреждено. –
Вам нужно использовать перенесенное изображение в своем приложении, или вы сохраняете его и не используете его в своем приложении? –
На самом деле я буду загружать переданное изображение на сервер. Но на самом деле я отправляю только один файл из arduino – user2964385