help wantedquestion
Repository metrics
- Stars
- (6,985 stars)
- PR merge metrics
- (No merged PRs in 30d)
Description
Application: Java client(FrameGrabber)->websocket.sendBinary->php Server(Imagick->readImageBlob)
grabber = FrameGrabber.createDefault(1);
grabber.setFormat("dshow");
grabber.setBitsPerPixel(8);
grabber.setImageWidth(1920);
grabber.setImageHeight(1080);
grabber.start();
System.out.println("Before frameToByteArray Time: " + System.currentTimeMillis());
byte[] imageBytes = frameToByteArray(frameMat);
System.out.println("After frameToByteArray Time: " + System.currentTimeMillis());
// Send image data as binary message
websocket.sendBinary(imageBytes);
public static byte[] frameToByteArray(Frame frame) throws IOException {
BufferedImage image = Java2DFrameUtils.toBufferedImage(frame);
ByteArrayOutputStream os = new ByteArrayOutputStream();
javax.imageio.ImageIO.write(image, "jpg", os);
return os.toByteArray();
}
Result
Before frameToByteArray Time: 1687021694023
After frameToByteArray Time: 1687021694124
Time needed for such Frame to byte[] operation is about 100ms
Is there more efficient way? Can i get byte[] directly from Frame and php Imagick can decode it?