org.surmon.pattern.importer.impl.JPEGImporter.java Source code

Java tutorial

Introduction

Here is the source code for org.surmon.pattern.importer.impl.JPEGImporter.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package org.surmon.pattern.importer.impl;

import java.awt.image.BufferedImage;
import java.awt.image.WritableRaster;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.filechooser.FileNameExtensionFilter;
import org.netbeans.api.progress.ProgressHandle;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.openide.util.lookup.ServiceProvider;
import org.surmon.pattern.api.ImageStack;
import org.surmon.pattern.api.PDataImporter;
import org.surmon.pattern.api.PatternImage;

/**
 *
 * @author palasjiri
 */
@ServiceProvider(service = PDataImporter.class)
public class JPEGImporter implements PDataImporter {

    private static final String[] extensions = { "jpg", "jpeg" };

    @Override
    public ImageStack importData(String path) {
        List<PatternImage> images = new ArrayList<>();

        for (int id = 1; id < 43; id++) {
            String nName = path + id + ".jpeg.jpg";
            File nFile = new File(nName);
            images.add(importJPEG(id - 1, nFile));
        }

        if (!images.isEmpty()) {
            //int w = images.get(0).getWidth();
            //int h = images.get(0).getHeight();
            return new ImageStack(images);
        } else {
            return null;
        }
    }

    private static PatternImage importJPEG(int id, File file) {

        BufferedImage tempImage;
        WritableRaster tempRaster;
        byte[] values;

        try {
            tempImage = ImageIO.read(file);
            tempRaster = tempImage.getRaster();
            values = new byte[tempImage.getWidth() * tempImage.getHeight()];
            int c = 0;
            for (int y = 0; y < tempImage.getHeight(); y++) {
                for (int x = 0; x < tempImage.getWidth(); x++) {
                    values[c++] = (byte) tempRaster.getSample(x, y, 0);
                }
            }

            Mat mat = new Mat(tempImage.getHeight(), tempImage.getWidth(), CvType.CV_8UC1);
            mat.put(0, 0, values);

            return new PatternImage(id, mat);

        } catch (IOException ex) {
            Logger.getLogger("Loading").log(Level.SEVERE, null, ex);
        }

        return null;
    }

    @Override
    public String[] getExtensions() {
        return extensions;
    }

    @Override
    public FileNameExtensionFilter getExtensionFilter() {
        return new FileNameExtensionFilter("JPEG", extensions);
    }

    @Override
    public boolean isSupporting(String extension) {
        for (String ex : extensions) {
            if (ex.equals(extension)) {
                return true;
            }
        }
        return false;
    }

    @Override
    public void setProgressHandle(ProgressHandle p) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

}