Próbuję wysłać wiele obrazów za pośrednictwem gniazda przy użyciu java, ale potrzebuję szybszego sposobu konwersji obrazów na tablicę bajtów, aby móc je wysłać. Wypróbowałem poniższy kod, ale napisałem około 10 000 obrazów na dysku C: \. Czy istnieje sposób na dokonanie tej konwersji bez zapisywania na dysku? Dzięki!Konwersja Java-Convert na bajt [] bez zapisywania na dysku
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
//ImageIO.setUseCache(false);
ImageIO.write(bi.getImage(), "jpg", outputStream);
byte[] imageBytes = outputStream.toByteArray();
Zauważ, że trochę więcej czasu robi kompresji obrazu przy użyciu wyższą kompresję (niższa jakość) JPEG można zaoszczędzić dużo czasu w sieci. Myślę, że powinieneś wziąć pod uwagę rozmiar bajtów faktycznie wysłany, który będzie znacznie większy z czystym 'BufferedImage'. BTW - jakie jest źródło tych obrazów? Jeśli jest to zrzut ekranu dla np., Często PNG może zapewnić mniejszy rozmiar bajtu niż domyślny kompresyjny JPEG. Jeśli były to ciągłe zrzuty ekranu, być może nawet strumień wideo. –
Źródłem są ciągłe zrzuty ekranu, które zasadniczo wprowadzam do strumienia. Ale tak, muszę wymyślić, jak skompresować obrazy bez zapisywania ich na dysku. To jest mój ostateczny cel – tier1