Самый быстрый способ размытия изображения в java

Изменить Я использую пакет Eclipse ADT, но когда я пытаюсь импортировать библиотеку в предложенном выше ответе, это не работает.

Я использую комбинацию LibGDX и Java (90-99% java) для размытия изображения. Размытие работает, но требуется почти секунда, чтобы сделать снимок экрана, сохранить его, получить к нему доступ, размыть его, сохранить и повторно получить к нему доступ. Я не могу делать много предварительной обработки, потому что для размытия требуется скриншот игры. Вот что я использую в настоящее время для размытия: (Я добавлю рисунок и скриншоты, если вам нужно их увидеть, но я думаю, что проблема заключается в размытии png 800x480.)

import java.awt.image.BufferedImage;
import java.awt.image.BufferedImageOp;
import java.awt.image.ConvolveOp;
import java.awt.image.Kernel;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.files.FileHandle;


public class Blur {
    private static BufferedImage mshi;
    private BufferedImage databuf;
    private static int blurRad = 300;

    public static void createBlur(FileHandle file) throws IOException {
        mshi = ImageIO.read(file.file());
        BufferedImage databuf = new BufferedImage(mshi.getWidth(null),
                mshi.getHeight(null),
                BufferedImage.TYPE_INT_BGR);

        java.awt.Graphics g = databuf.getGraphics();
        g.drawImage(mshi, 455, 255, null);

        float[] blurKernel = new float[blurRad*blurRad];
        for(int i =0; i<blurRad*blurRad; i++) {
            blurKernel[i] = 1.0f/256.0f;
        }

        BufferedImageOp op = new ConvolveOp( new Kernel(20, 20, blurKernel), ConvolveOp.EDGE_ZERO_FILL, null );
        mshi = op.filter(mshi, databuf);

        g.dispose();    

        File outputfile = Gdx.files.local("Blur.png").file();
        ImageIO.write(mshi, "png", outputfile);
    }
}

person Chris    schedule 30.09.2013    source источник
comment
возможный дубликат Android: быстрое размытие растрового изображения?   -  person Geobits    schedule 30.09.2013
comment
Во-первых, похоже, что вы выделяете 90000 элементов для своего ядра, а затем используете только 400 из них, что приведет к потере времени. Кроме того, усредняющие фильтры являются раздельными. Это означает, что вы можете выполнить одномерную свертку для каждой строки, затем одномерную свертку для каждого столбца и получить тот же эффект, что и свертка с усредняющим двумерным фильтром. Это разница между 400 операциями на пиксель и 40 операциями на пиксель.   -  person jodag    schedule 01.10.2013
comment
Я не думаю, что ImageIO и Java 2D работают на Android? Или я что-то упускаю?   -  person Harald K    schedule 01.10.2013
comment
попробуйте jhlabs.com/ip/blurring.html   -  person code_fish    schedule 08.10.2013