Я отправляю изображение из приложения java pc в приложение для Android через сокеты. Мое изображение, которое я отправляю, по-разному не читает байтовый файл андроида [], и он имеет разные результаты для того, как большая часть изображения декодируется. Вот мой кодПоток не читает все изображение
Desktop:
Socket socket = new Socket("127.0.0.1", 59900);
// BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
OutputStream outputStream = socket.getOutputStream();
Robot r = new Robot();
Toolkit t = Toolkit.getDefaultToolkit();
Rectangle rect = new Rectangle(t.getScreenSize());
BufferedImage img = r.createScreenCapture(rect);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(img, "jpg", baos);
byte[] size = ByteBuffer.allocate(4).putInt(baos.size()).array();
outputStream.write(size);
outputStream.write(baos.toByteArray());
//outputStream.flush();
System.out.println("Flushed: " + System.currentTimeMillis());
//Thread.sleep(12000);
System.out.println("Closing: " + System.currentTimeMillis());
socket.close();
код Android
ServerSocket server = new ServerSocket(59900);
Socket socket = server.accept();
InputStream inputStream = socket.getInputStream();
System.out.println("Reading: " + System.currentTimeMillis());
byte[] sizeAr = new byte[4];
inputStream.read(sizeAr);
int size = ByteBuffer.wrap(sizeAr).asIntBuffer().get();
byte[] imageAr = new byte[size];
inputStream.read(imageAr);
// ByteArrayInputStream bis = new ByteArrayInputStream(imageAr);
bp = BitmapFactory.decodeByteArray(imageAr, 0, size);
Вот картина того, что результат выглядит
ByteBuffer.allocate (4) .. попробуйте изменить здесь с 4 по 16 и посмотреть, что будет –
Изображение не создается, когда я это делаю. – Gallo2fire
Помните, что _inputStream.read (imageAr) _ не обязательно считывает полную длину массива. Вам нужно проверить возвращаемое значение, чтобы увидеть фактическое количество отсчетов байтов. – harism