[Error] RescaleOp.filter()

0

witam, napisałem taką funkcję:

    public static BufferedImage liniowo(BufferedImage img){
        int MIN = -255;
        int MAX = 255;
        int INIT = 0;
        final JDialog dialog = new JDialog();
        dialog.setTitle("Rozjaśnij liniowo");
        dialog.setModal(true);
        dialog.setLayout(new BorderLayout());

        final JLabel label = new JLabel("0", SwingConstants.CENTER);
        final JSlider slider = new JSlider(JSlider.HORIZONTAL, MIN, MAX, INIT);
        slider.setMajorTickSpacing(255);
        slider.setPaintTicks(true);
        slider.setPaintLabels(true);
        slider.addChangeListener(new ChangeListener() {
            public void stateChanged(ChangeEvent evt) {
                JSlider slider = (JSlider)evt.getSource();
                    if (!slider.getValueIsAdjusting()) {
                        val = slider.getValue();
                        label.setText("" + val + "");
                    }
            }
        });

        JButton ok = new JButton("OK");
        ok.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent k){
                    value = slider.getValue();
                    dialog.setVisible(false);
                }
        });
        JButton cancel = new JButton("Anuluj");
        cancel.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent k){
                    dialog.setVisible(false);
                }
        });

        dialog.add(label, BorderLayout.PAGE_START);
        dialog.add(slider, BorderLayout.CENTER);

        JPanel dolny = new JPanel();
        dolny.setLayout(new GridLayout(1, 2));
        dolny.add(cancel);
        dolny.add(ok);

        dialog.add(dolny, BorderLayout.PAGE_END);
        dialog.pack();
        dialog.setVisible(true);

        float offset = (float) value;
        float i = 1f;
        RescaleOp op = new RescaleOp(i, offset, null);
        img = op.filter(img, null);

        return img;
    }

której zadaniem jest dodawanie stałej wartości (rozjaśnienie/ściemnienie) do przekazanego doń argumentu, niestety jednak funkcja powoduje błąd:

# An unexpected error has been detected by Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6d0ad65d, pid=3488, tid=3984

przyczyną błędu jest przedostatnia linia funkcji (przynajmniej po jej skomentowaniu program nie wyrzuca błędu)

img = op.filter(img, null);

generowany błąd zamieszczę na serwerze, może to coś pomoże, ja nie wiele z niego rozumiem ;/ log

0

żeby było śmieszniej, podesłałem dziś projekt koledze, u niego całość się kompiluje (tak jak u mnie), natomiast program nie wyrzuca błędu podczas działania ;/

0

RAM?

pozdrawiam

0
eximius napisał(a)

RAM?

zechciał byś rozwinąć?

0

problem, został częściowo rozwiązany, zlokalizowałem błąd, błędem była funkcj zamieniająca wczytany obrazek na skalę szarości

    public static BufferedImage toGray(BufferedImage img){
        ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY);
        ColorConvertOp op = new ColorConvertOp(cs, null);
        img = op.filter(img, null);
        cs = ColorSpace.getInstance(ColorSpace.CS_sRGB);
        op = new ColorConvertOp(cs, null);
        img = op.filter(img, null);

        return img;
        }

jeżeli wstawię w komentarz linijki:

        cs = ColorSpace.getInstance(ColorSpace.CS_sRGB);
        op = new ColorConvertOp(cs, null);
        img = op.filter(img, null);

to całość działa dobrze, jednak taka konwersja na skalę szarości daje efekt zupełnie inny niż konwersja na skalę szarości przy użyciu photoshopa, zna ktoś może sposób jak ładnie zamienić obrazek w skalę szarości?

0

chodzilo mi o to abys sprawdzil pamiec memtestem.x86

pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0