Были попытки уменьшить масштаб изображения до разного масштаба, но у меня возникли проблемы. Контекст находится внутри видеопроигрывателя (с использованием VLCJ).ArrayIndexOutOfBoundsException при попытке масштабирования
Этот код используется для масштабирования изображения, но после первого кадра изображение по какой-либо причине перестает обновляться по следующему изображению.
public void newFrameRecieved(int[] rgbBuffer)
{
this.image.setRGB(0, 0, this.size.width, this.size.height, rgbBuffer, 0, this.size.width);
after = new BufferedImage(this.getWidth(), this.getHeight(), this.image.getType());
at = new AffineTransform();
scalingFactorX = (double)this.getWidth()/ (double)this.image.getWidth();
scalingFactorY = (double)this.getHeight()/ (double)this.image.getHeight();
at.scale(scalingFactorX, scalingFactorY);
scaleOp = new AffineTransformOp(at, AffineTransformOp.TYPE_BILINEAR);
this.image = scaleOp.filter(this.image, after);
repaint();
}
Если средняя часть (весь код между this.image.setRGB (......) и перекрасить();) удаляется, то он работает (за исключением масштабирования части ...)
Поймите ли вы любую помощь, которую вы, ребята, можете предложить! Ошибка получил следующий:
JNA: Callback uk.co.capr[email protected]4516af24 threw the following exception:
java.lang.ArrayIndexOutOfBoundsException: Coordinate out of bounds!
at sun.awt.image.IntegerInterleavedRaster.setDataElements(IntegerInterleavedRaster.java:301)
at java.awt.image.BufferedImage.setRGB(BufferedImage.java:1059)
at myVlcjWrapper.VideoSurfacePanel.newFrameRecieved(VideoSurfacePanel.java:65)
Я понимаю проблему, я просто невежественный, как это исправить! Спасибо!
Насколько велико ваше изображение, которое вы пытаетесь масштабировать? в пикселях – D3181
Что делает 'image.setRGB'? – bradimus
Поскольку это поток видео в реальности, я не могу сказать, что я уверен. Но я уверен, что это 1920x1080! – Payerl