Package magick4j

Examples of magick4j.MagickImage


        double[] kernel = this.getBlurKernel(width);
        double[] p = new double[pw*4];
        double[] q = new double[w*4];
        double[] pixel = new double[4];

        MagickImage blur = image.createCompatible();
        BufferedImage conv = image.expandBorders(0, halfWidth, 0, halfWidth);

        WritableRaster o = conv.getRaster();
        WritableRaster d = blur.getImage().getRaster();

        /*
         * Blur Rows.
         */

        for(y = 0; y < h; y++){

            p = o.getPixels(0, y, pw, 1, p);

            for(x = 0; x < w; x++){
                pixel[0] = pixel[1] = pixel[2] = 0;
                pixel[3] = OpaqueOpacity;

                //TODO Implement Channels.
                for(i = 0; i < width; i++){
                    base = 4*(x+i);
                    pixel[0] += kernel[i]*p[base+0];
                    pixel[1] += kernel[i]*p[base+1];
                    pixel[2] += kernel[i]*p[base+2];
                }

                base = 4*x;

                q[base+0] = roundToQuantum(pixel[0]+bias);
                q[base+1] = roundToQuantum(pixel[1]+bias);
                q[base+2] = roundToQuantum(pixel[2]+bias);
                q[base+3] = 255.0;
            }

            d.setPixels(0, y, w, 1, q);
        }

        /*
         * Blur columns.
         */

        p = new double[ph*4];
        q = new double[h*4];

        o = null;
        conv = null;

        conv = blur.expandBorders(halfWidth, 0, halfWidth, 0);
        o = conv.getRaster();
       
        for(x = 0; x < w; x++){
           
            p = o.getPixels(x, 0, 1, ph, p);
View Full Code Here


    this.grayscale = grayscale;
  }

  @Override
  protected MagickImage effect(MagickImage image) throws OptionException {
    MagickImage neg = image.createCompatible();

    int w = image.getWidth(), h = image.getHeight();

    int base;

    WritableRaster o = image.getImage().getRaster();
    WritableRaster d = neg.getImage().getRaster();

    double[] p = new double[w*4];
    double[] q = new double[w*4];

    if(this.grayscale){
 
View Full Code Here

    if(kernel.getWidth()%2 == 0)
      throw new OptionException("Kernel width must be an odd number.");

        double bias = 0.0; // Not used;
        int h = image.getHeight(), w = image.getWidth();
        MagickImage convolve = image.createCompatible();
        BufferedImage conv = image.getImageToConvolve(kernel.getWidth());

        int cw = conv.getWidth(), ch = conv.getHeight();
        BufferedImage dst = new BufferedImage(w, h, image.getImage().getType());


        /*
         * Normalize kernel.
         */

        float[] normal = kernel.getKernelData(null);

        float gamma = 0.0f;

        for(int i = 0; i<normal.length; i++){
            gamma += normal[i];
        }

        gamma = 1.0f/(abs(gamma) <= Constants.MagickEpsilon ? 1.0f : gamma);

        for(int i = 0; i<normal.length; i++)
            normal[i] *= gamma;

        // Some things to do before actual convolving.

        int kw = kernel.getWidth();
        double[][] p = new double[kw][cw*4];
        double[] q;

        WritableRaster d = dst.getRaster();
        WritableRaster o = conv.getRaster();

        // Convolve

    for(int j=1; j<kw; j++)
      p[j] = o.getPixels(0, j-1, cw, 1, p[j]);

        for(int y=0; y<h; y++){

            for(int j=1; j<kw; j++)
        System.arraycopy(p[j], 0, p[j-1], 0, cw*4);

      p[kw-1] = o.getPixels(0, y+kw-1, cw, 1, p[kw-1]);

            q = new double[w*4];
            for(int x=0; x<w; x++){
               
                double[] pixel = new double[4];
                pixel[0] = pixel[1] = pixel[2] = 0;
                pixel[3] = Constants.OpaqueOpacity;

                for(int v=0; v<kw; v++){
                    for(int u=0; u<kw; u++){
                        float e = normal[v*kw+u];
                       
                        pixel[0] += e*p[v][4*(x+u)+0];
                        pixel[1] += e*p[v][4*(x+u)+1];
                        pixel[2] += e*p[v][4*(x+u)+2];
                      
                    }
                }

                q[4*x+0] = roundToQuantum(pixel[0]+bias);
                q[4*x+1] = roundToQuantum(pixel[1]+bias);
                q[4*x+2] = roundToQuantum(pixel[2]+bias);
                q[4*x+3] = 255.0;
            }
            d.setPixels(0, y, w, 1, q);
        }

        convolve.setImage(dst);

        return convolve;
    }
View Full Code Here

  }

  @Override
  protected MagickImage effect(MagickImage image) throws OptionException {
   
    MagickImage norm = image.createCompatible();

    int h = image.getHeight(), w = image.getWidth();
    int x, y, intensity, base;

    this.currentWhitePoint = w*h-this.whitePoint;

    double[] histogram  = new double[(int) (Constants.MaxMap+1)*4];
    double[] stretchMap = new double[(int) (Constants.MaxMap+1)*4];
    double[] p = new double[w*4];
    double[] q = new double[w*4];
    double[] black = new double[4];
    double[] white = new double[4];

    WritableRaster o = image.getImage().getRaster();
    WritableRaster d = norm.getImage().getRaster();

    /*
     * Calculate histogram.
     */
    for(y = 0; y < h; y++){
View Full Code Here

        this.amount = amount;
    }

    @Override
    protected MagickImage effect(MagickImage image) throws OptionException {
        MagickImage implode = image.createCompatible();
        int w = image.getWidth(), h = image.getHeight();
        int y, x;

        double[] scale = {1.0,1.0};
        double[] center = {0.5*w,0.5*h};
        double[] pixel = new double[4];
        double[] delta = new double[2];
        double[] q = new double[w*4];
        double dist, factor, radius = center[0];

        if( w > h){
            scale[1] = ((double) w)/((double) h);
        }else if(h > w){
            scale[0] = ((double) h)/((double) w);
            radius = center[1];
        }

        double radius2 = radius*radius;

        WritableRaster o = image.getImage().getRaster();
        WritableRaster d = implode.getImage().getRaster();

        for(y = 0; y < h; y++){
            pixel[0] = pixel[1] = pixel[2] = pixel[3] = 0.0;
            delta[1] = scale[1]*(y-center[1]);

 
View Full Code Here

        this.waveLength = waveLength;
    }

    @Override
    protected MagickImage effect(MagickImage image) throws OptionException {
        MagickImage wave = image.createCompatible(image.getWidth(), image.getHeight()+(int) (2.0*abs(this.amplitude)));

        double[] sineMap = getSineMap(image.getWidth());
        double[] pixel = new double[4];
        int x,y;
        int w = wave.getWidth(), h = wave.getHeight();

        WritableRaster o = wave.getImage().getRaster();

        BufferedImage expanded = new BufferedImage(w+1,h+(int) (2*abs(this.amplitude))+1,BufferedImage.TYPE_INT_ARGB);
        Graphics2D g = expanded.createGraphics();
        g.setBackground(image.getBackgroundColor().toColor());
        g.clearRect(0, 0, w, h);
View Full Code Here

  @Override
  protected MagickImage effect(MagickImage image) throws OptionException {
    double[] light = this.calculateLightVector();

    BufferedImage orig = image.getImageToConvolve(3);
    MagickImage dst = image.createCompatible();

    int h = image.getHeight(), w = image.getWidth();
    int cw = w +2;
    int lcw = cw*4;
    int base;

    double distance, normalDistance, shade;
    double[] normal = new double[3];

    double[][] p = new double[3][lcw];
    double[] q = new double[w*4];
    double[][] s = new double[3][cw];

    WritableRaster o = orig.getRaster();
    WritableRaster d = dst.getImage().getRaster();

    p[1] = o.getPixels(0, 0, cw, 1, p[1]);
    p[2] = o.getPixels(0, 1, cw, 1, p[2]);

    for(int i = 0; i < cw; i++){
View Full Code Here

    this.threshold = threshold;
  }

  @Override
  protected MagickImage effect(MagickImage image) throws OptionException {
    MagickImage solarized = image.createCompatible();

    WritableRaster d = solarized.getImage().getRaster();
    WritableRaster o = image.getImage().getRaster();

    int h = image.getHeight(), w = image.getWidth();

    double[] p = new double[w*4];
 
View Full Code Here

  protected MagickImage effect(MagickImage image) throws OptionException {
    BufferedImage gray = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_BYTE_GRAY);
    Graphics2D g = gray.createGraphics();
    g.drawImage(image.getImage(), 0, 0, null);
    g.dispose();
    MagickImage blur = (new BlurEffect(this.radius,this.sigma)).effect((new EdgeEffect(this.radius)).effect(new MagickImage(gray)));
    return (new NegateEffect(false)).effect((new NormalizeEffect()).effect(blur));
  }
View Full Code Here

TOP

Related Classes of magick4j.MagickImage

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.