Package org.jwildfire.image

Examples of org.jwildfire.image.SimpleImage


  public void selectLoader(String pName) {
    loader = LoadersList.getLoaderInstance(desktop, pName);
  }

  public Buffer executeLoader(String pOutputName, boolean pRecordAction) {
    SimpleImage img = loader.execute();
    Buffer buffer = bufferList.addImageBuffer(addBuffersToDesktop ? desktop : null,
        loader.getName(), img);
    if ((pOutputName != null) && (pOutputName.length() > 0))
      buffer.setName(pOutputName);
    return buffer;
View Full Code Here


    Buffer inBuffer = bufferList.bufferByName(pInputName);
    if (inBuffer == null) {
      dumpBuffers();
      throw new RuntimeException("Input buffer <" + pInputName + "> not found");
    }
    SimpleImage newImg = null;
    SimpleHDRImage newHDRImg = null;
    if (inBuffer.getBufferType() == BufferType.IMAGE) {
      transformer.setStoreMesh3D(pStoreMesh3D);
      newImg = inBuffer.getImage().clone();
      transformer.transformImage(newImg);
    }
    else if (inBuffer.getBufferType() == BufferType.HDR_IMAGE) {
      transformer.setStoreMesh3D(pStoreMesh3D);
      newHDRImg = inBuffer.getHDRImage().clone();
      transformer.transformImage(newHDRImg);
    }
    else if (inBuffer.getBufferType() == BufferType.MESH3D) {
      transformer.setStoreMesh3D(pStoreMesh3D);
      Mesh3D mesh3D = inBuffer.getMesh3D();
      newImg = new SimpleImage(mesh3D.getImageWidth(), mesh3D.getImageHeight());
      transformer.setInputMesh3D(mesh3D);
      transformer.transformImage(newImg);
    }
    Buffer outBuffer = null;
    if (newImg != null) {
      outBuffer = bufferList.addImageBuffer(addBuffersToDesktop ? desktop : null,
          transformer.getName(), newImg);
      if ((pOutputName != null) && (pOutputName.length() > 0))
        outBuffer.setName(pOutputName);
    }
    Buffer outHDRBuffer = null;
    if (newHDRImg != null) {
      outHDRBuffer = bufferList.addHDRImageBuffer(addBuffersToDesktop ? desktop : null,
          transformer.getName(), newHDRImg);
      if ((pOutputName != null) && (pOutputName.length() > 0))
        outHDRBuffer.setName(pOutputName);
    }
    Buffer outBuffer3D = null;
    if (pStoreMesh3D) {
      ScaleTransformer scaleT = new ScaleTransformer();
      scaleT.setAspect(ScaleAspect.KEEP_WIDTH);
      scaleT.setUnit(ScaleTransformer.Unit.PIXELS);
      scaleT.setScaleWidth(120);
      SimpleImage scaledImg = newImg.clone();
      scaleT.transformImage(scaledImg);
      outBuffer3D = bufferList.addMesh3DBuffer(addBuffersToDesktop ? desktop : null, pInputName,
          transformer.getOutputMesh3D(true), scaledImg);
      if ((pOutput3DName != null) && (pOutput3DName.length() > 0))
        outBuffer3D.setName(pOutput3DName);
View Full Code Here

      System.out.println(buffer.getName() + "#" + buffer.getBufferType());
    }
  }

  public void saveLastImage(String pFilename) throws Exception {
    SimpleImage img = getLastImage();
    if (img == null)
      throw new IllegalStateException();
    new ImageWriter().saveAsJPEG(img, pFilename);
  }
View Full Code Here

    fadePaletteColors = pFadePaletteColors;
    quality = pQuality;
  }

  public static double calculateCoverage(SimpleImage pImg, int bgRed, int bgGreen, int bgBlue, boolean useFilter) {
    SimpleImage img;
    if (useFilter) {
      SimpleImage filteredImg = new SimpleImage(pImg.getBufferedImg(), pImg.getImageWidth(), pImg.getImageHeight());
      ConvolveTransformer transformer = new ConvolveTransformer();
      transformer.initDefaultParams(filteredImg);
      transformer.setKernelType(KernelType.SOBEL_3X3);
      transformer.transformImage(filteredImg);
      img = filteredImg;
View Full Code Here

    }
    throw new IllegalStateException();
  }

  public static SimpleImage createSimplifiedRefImage(SimpleImage pImg) {
    SimpleImage img = pImg.clone();
    PixelizeTransformer pT = new PixelizeTransformer();
    pT.setCentre(false);
    pT.setGridSize(5);
    pT.transformImage(img);
    return img;
View Full Code Here

    pT.transformImage(img);
    return img;
  }

  public static double calculateDiffCoverage(SimpleImage pImg, SimpleImage pSimplifiedRefImg) {
    SimpleImage img = createSimplifiedRefImage(pImg);
    long maxCoverage = img.getImageWidth() * img.getImageHeight();
    long coverage = 0;
    Pixel pixel = new Pixel();
    Pixel refPixel = new Pixel();
    for (int k = 0; k < img.getImageHeight(); k++) {
      for (int l = 0; l < img.getImageWidth(); l++) {
        pixel.setARGBValue(img.getARGBValue(l, k));
        refPixel.setARGBValue(pSimplifiedRefImg.getARGBValue(l, k));
        if (fabs(pixel.r - refPixel.r) > 29.0 || fabs(pixel.g - refPixel.g) > 15.0 || fabs(pixel.b - refPixel.b) > 78.0) {
          coverage++;
        }
      }
View Full Code Here

  @Property(description = "Turn direction", editorClass = DirectionEditor.class)
  private Direction direction = Direction.LEFT;

  @Override
  protected void performPixelTransformation(WFImage pImg) {
    SimpleImage img = (SimpleImage) pImg;
    int width = pImg.getImageWidth();
    int height = pImg.getImageHeight();
    if ((this.angle == Angle._90) || (this.angle == Angle._270))
      img.resetImage(height, width);
    Pixel pixel = new Pixel();
    if (((this.angle == Angle._90) && (this.direction == Direction.LEFT))
        || ((this.angle == Angle._270) && (this.direction == Direction.RIGHT)))
    {

      for (int i = 0; i < height; i++) {
        for (int j = 0; j < width; j++) {
          pixel.setARGBValue(srcImg.getARGBValue(j, i));
          img.setRGB(i, width - j - 1, pixel);
        }
      }
    }
    else if (this.angle == Angle._180) {
      for (int i = 0; i < height; i++) {
        for (int j = 0; j < width; j++) {
          pixel.setARGBValue(srcImg.getARGBValue(j, i));
          img.setRGB(width - j - 1, height - i - 1, pixel);
        }
      }
    }
    else if (((angle == Angle._270) && (this.direction == Direction.LEFT))
        || ((angle == Angle._90) && (this.direction == Direction.RIGHT)))
    {
      for (int i = 0; i < height; i++) {
        for (int j = 0; j < width; j++) {
          pixel.setARGBValue(srcImg.getARGBValue(j, i));
          img.setRGB(height - i - 1, j, pixel);
        }
      }
    }
  }
View Full Code Here

  @Property(description = "Wind direction", editorClass = DirectionEditor.class)
  private Direction direction = Direction.RIGHT;

  @Override
  protected void performPixelTransformation(WFImage pImg) {
    SimpleImage img = (SimpleImage) pImg;
    int width = pImg.getImageWidth();
    int height = pImg.getImageHeight();
    int contrast = 0;
    short smask[][] = new short[height][width];
    int rs = 2990;
    int gs = 5880;
    int bs = 1130;
    rs = (rs * Tools.VPREC) / 10000;
    gs = (gs * Tools.VPREC) / 10000;
    bs = (bs * Tools.VPREC) / 10000;
    Pixel p0 = new Pixel();
    Pixel p1 = new Pixel();
    Tools.srand123(this.seed);

    /* flip the image */
    if (direction == Direction.LEFT) {
      srcImg = srcImg.clone();
      FlipTransformer ft = new FlipTransformer();
      ft.setAxis(FlipTransformer.Axis.X);
      ft.transformImage(srcImg);
      ft.setAxis(FlipTransformer.Axis.X);
      ft.transformImage(img);
    }

    /** 1st line **/
    for (int i = 0; i < width; i++)
      smask[0][i] = 1;
    /** lines 2...(height-2) **/
    for (int i = 1; i < (height - 1); i++) {
      /* 1st pixel */
      smask[i][0] = 1;
      /* process pixels 2..width-1 */
      for (int j = 1; j < (width - 1); j++) {
        int dd = 0, int1;
        p1.setARGBValue(srcImg.getARGBValue(j - 1, i - 1));
        int1 = (rs * p1.r + gs * p1.g + bs * p1.b) >> Tools.SPREC;
        dd += int1;

        p1.setARGBValue(srcImg.getARGBValue(j + 1, i - 1));
        int1 = (rs * p1.r + gs * p1.g + bs * p1.b) >> Tools.SPREC;
        dd -= int1;

        p1.setARGBValue(srcImg.getARGBValue(j - 1, i));
        int1 = (rs * p1.r + gs * p1.g + bs * p1.b) >> Tools.SPREC;
        dd += int1;

        p1.setARGBValue(srcImg.getARGBValue(j + 1, i));
        int1 = (rs * p1.r + gs * p1.g + bs * p1.b) >> Tools.SPREC;
        dd -= int1;

        p1.setARGBValue(srcImg.getARGBValue(j - 1, i + 1));
        int1 = (rs * p1.r + gs * p1.g + bs * p1.b) >> Tools.SPREC;
        dd += int1;

        p1.setARGBValue(srcImg.getARGBValue(j + 1, i + 1));
        int1 = (rs * p1.r + gs * p1.g + bs * p1.b) >> Tools.SPREC;
        dd -= int1;

        if (dd < contrast) {
          smask[i][j] = 1;
        }
      }
      /* last pixel */
      smask[i][width - 1] = 1;
    }
    /** last line **/
    for (int i = 0; i < width; i++)
      smask[height - 1][i] = 1;

    /** accept only "thick" lines **/
    for (int i = 1; i < (height - 1); i++) {
      for (int j = 1; j < (width - 1); j++) {
        if (smask[i][j] == 0) {
          if (smask[i][j + 1] != 0)
            smask[i][j] = 1;
        }
      }
    }

    /** create "thin" lines **/
    for (int i = 1; i < (height - 1); i++) {
      nextLine: for (int j = (width - 2); j >= 1; j--) {
        if (smask[i][j] == 0) {
          int k = j - 1;
          while (smask[i][k] == 0) {
            smask[i][k] = 1;
            k--;
            if (k < 1)
              continue nextLine;
          }
        }
      }
    }

    /** remove isolated pixels **/
    for (int i = 1; i < (height - 1); i++) {
      for (int j = 1; j < (width - 1); j++) {
        if (smask[i][j] == 0) {
          int dd = 0;
          dd += smask[i][j - 1];
          dd += smask[i][j + 1];
          dd += smask[i - 1][j];
          dd += smask[i + 1][j];
          dd += smask[i + 1][j - 1];
          dd += smask[i + 1][j + 1];
          dd += smask[i - 1][j - 1];
          dd += smask[i - 1][j + 1];
          if (dd == 8)
            smask[i][j] = 1;
        }
      }
    }

    /** apply the changes **/
    int intensity0 = this.intensity;
    int intensity1 = intensity0 / 2;

    {
      double rprob = (double) ((double) 1.0 - (double) this.probability / (double) 100.0);
      for (int i = 0; i < height; i++) {
        cont: for (int j = (width - 1); j >= 0; j--) {
          if ((smask[i][j] == 0) && (Tools.drand() >= rprob)) {
            if (j < 1) {
              continue cont;
            }
            int intensity = intensity0 + (int) (Tools.drand() * intensity1 + 0.5);
            double dm = 100.0 / (double) (intensity - 1);
            int kmax = intensity;
            if ((j + kmax) >= width)
              kmax = width - j;
            for (int k = 0; k < kmax; k++) {
              int mix = (int) (100.0 - (double) k * dm + 0.5);
              int m1 = 100 - mix;
              int m2 = mix;
              p0.setARGBValue(srcImg.getARGBValue(j, i));
              p1.setARGBValue(srcImg.getARGBValue(j + k, i));
              int rv = ((int) ((int) p1.r * m1) + (int) p0.r * m2) / (int) 100;
              int gv = ((int) ((int) p1.g * m1) + (int) p0.g * m2) / (int) 100;
              int bv = ((int) ((int) p1.b * m1) + (int) p0.b * m2) / (int) 100;
              img.setRGB(j + k, i, rv, gv, bv);
            }
          }
        }
      }
    }
View Full Code Here

    setTitle("Welcome to " + Tools.APP_TITLE + " " + Tools.APP_VERSION);
    setBounds(320, 140, 490, 498);

    // Load logo
    try {
      SimpleImage img = getImage(Tools.SPECIAL_VERSION ? "logo_special.png" : "logo.png");
      ImagePanel imgPanel = new ImagePanel(img, 0, 0, img.getImageWidth());
      imgPanel.setPreferredSize(new Dimension(img.getImageWidth(), img.getImageHeight()));
      imgPanel.setLocation(Tools.SPECIAL_VERSION ? 0 : 79, 4);
      northPanel.add(imgPanel);
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }

    // Load main image
    try {
      String imageFilename = imageFilenames[(int) (Math.random() * imageFilenames.length)];
      SimpleImage img = getImage(imageFilename);
      //      {
      //        TextTransformer txt = new TextTransformer();
      //        txt.setText1("Number of currently supported variations: " + VariationFuncList.getNameList().size() + "  ");
      //        txt.setText2("  ");
      //        txt.setAntialiasing(false);
      //        txt.setColor(Color.LIGHT_GRAY);
      //        txt.setMode(Mode.NORMAL);
      //        txt.setFontStyle(FontStyle.PLAIN);
      //        txt.setFontName("Arial");
      //        txt.setFontSize(10);
      //        txt.setHAlign(HAlignment.RIGHT);
      //        txt.setVAlign(VAlignment.BOTTOM);
      //        txt.transformImage(img);
      //      }

      panel_2.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));

      ImagePanel imgPanel = new ImagePanel(img, 0, 0, img.getImageWidth());
      imgPanel.setPreferredSize(new Dimension(img.getImageWidth(), img.getImageHeight()));
      panel_2.add(imgPanel);
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
View Full Code Here

  public SimpleHDRImage getHDRIntensityMap() {
    return hdrHeightMap;
  }

  public void init(RenderInfo pRenderInfo) {
    image = new SimpleImage(pRenderInfo.getImageWidth(), pRenderInfo.getImageHeight());
    if (pRenderInfo.isRenderHDR()) {
      hdrImage = new SimpleHDRImage(pRenderInfo.getImageWidth(), pRenderInfo.getImageHeight());
    }
    if (pRenderInfo.isRenderHDRIntensityMap()) {
      hdrHeightMap = new SimpleHDRImage(pRenderInfo.getImageWidth(), pRenderInfo.getImageHeight());
View Full Code Here

TOP

Related Classes of org.jwildfire.image.SimpleImage

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.