| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| package convwatch; |
| |
| // import java.awt.Image; |
| import convwatch.ImageHelper; |
| |
| // ----------------------------------------------------------------------------- |
| abstract class CountPixel |
| { |
| int m_nCount = 0; |
| public int getCount() {return m_nCount;} |
| public abstract void count(int _nRGB); |
| } |
| |
| // ----------------------------------------------------------------------------- |
| class CountNotWhite extends CountPixel |
| { |
| public CountNotWhite() |
| { |
| // System.out.println("CountWhite()"); |
| } |
| |
| public void count(int pixel) |
| { |
| int alpha = (pixel >> 24) & 0xff; |
| int red = (pixel >> 16) & 0xff; |
| int green = (pixel >> 8) & 0xff; |
| int blue = (pixel ) & 0xff; |
| |
| // System.out.println(String.valueOf(red) + ":" + String.valueOf(green) + ":" + String.valueOf(blue)); |
| if (red == 0xff && green == 0xff && blue == 0xff) |
| { |
| return; |
| } |
| m_nCount++; |
| } |
| } |
| |
| // ----------------------------------------------------------------------------- |
| class CountNotBlack extends CountPixel |
| { |
| public CountNotBlack() |
| { |
| // System.out.println("CountBlack()"); |
| } |
| |
| public void count(int pixel) |
| { |
| int alpha = (pixel >> 24) & 0xff; |
| int red = (pixel >> 16) & 0xff; |
| int green = (pixel >> 8) & 0xff; |
| int blue = (pixel ) & 0xff; |
| |
| if (red == 0x00 && green == 0x00 && blue == 0x00) |
| { |
| return; |
| } |
| m_nCount++; |
| } |
| } |
| |
| // ----------------------------------------------------------------------------- |
| class graphics_stuff |
| { |
| public int stuff() |
| { |
| // (1) decoding |
| int rgba = 0; // ...; // comes from PixelGrabber, BufferedImage.getRGB etc. |
| int red = (rgba >> 16) & 0xff; |
| int green = (rgba >> 8) & 0xff; |
| int blue = rgba & 0xff; |
| int alpha = (rgba >> 24) & 0xff; |
| // (2) now modify red, green, blue and alpha as you like; |
| // make sure that each of the four values stays in the |
| // interval 0 to 255 |
| // ... |
| // (3) and encode back to an int, e.g. to give it to MemoryImageSource or |
| // BufferedImage.setRGB |
| rgba = (alpha << 24) | (red << 16) | (green << 8) | blue; |
| return 0; |
| } |
| |
| public static void handlesinglepixel(int x, int y, int pixel) |
| { |
| int alpha = (pixel >> 24) & 0xff; |
| int red = (pixel >> 16) & 0xff; |
| int green = (pixel >> 8) & 0xff; |
| int blue = (pixel ) & 0xff; |
| // Deal with the pixel as necessary... |
| } |
| |
| public static void countPixel(ImageHelper img, int _x, int _y, int _w, int _h, CountPixel _aPixelCounter) |
| { |
| for (int y = 0; y < _h; y++) { |
| for (int x = 0; x < _w; x++) { |
| // handlesinglepixel(x+i, y+j, pixels[j * w + i]); |
| _aPixelCounter.count(img.getPixel(x,y)); |
| } |
| } |
| } |
| public static int countNotWhitePixel(ImageHelper _aImage) |
| { |
| int w = _aImage.getWidth(); |
| int h = _aImage.getHeight(); |
| |
| CountPixel aCountNotWhite = new CountNotWhite(); |
| countPixel(_aImage, 0, 0, w, h, aCountNotWhite); |
| return aCountNotWhite.getCount(); |
| } |
| |
| public static int countNotBlackPixel(ImageHelper _aImage) |
| { |
| int w = _aImage.getWidth(); |
| int h = _aImage.getHeight(); |
| |
| CountPixel aCountNotBlack = new CountNotBlack(); |
| countPixel(_aImage, 0, 0, w, h, aCountNotBlack); |
| return aCountNotBlack.getCount(); |
| } |
| } |
| |
| // ----------------------------------------------------------------------------- |
| |
| public class PixelCounter { |
| // private Image m_aImage; |
| ImageHelper m_aImage; |
| |
| |
| public int countNotWhitePixel(String _sFile) |
| throws java.io.IOException |
| { |
| m_aImage = ImageHelper.createImageHelper(_sFile); |
| int nw = graphics_stuff.countNotWhitePixel(m_aImage); |
| return nw; |
| } |
| |
| public int countNotBlackPixel(String _sFile) |
| throws java.io.IOException |
| { |
| m_aImage = ImageHelper.createImageHelper(_sFile); |
| int nw = graphics_stuff.countNotBlackPixel(m_aImage); |
| return nw; |
| } |
| |
| public static int countNotWhitePixelsFromImage(String _sFile) |
| throws java.io.IOException |
| { |
| PixelCounter a = new PixelCounter(); |
| return a.countNotWhitePixel(_sFile); |
| } |
| |
| public static int countNotBlackPixelsFromImage(String _sFile) |
| throws java.io.IOException |
| { |
| PixelCounter a = new PixelCounter(); |
| return a.countNotBlackPixel(_sFile); |
| } |
| |
| // ----------------------------------------------------------------------------- |
| |
| // public static void main(String[] args) { |
| // |
| // String a = helper.StringHelper.createValueString(10, 4); |
| // int dummy = 1; |
| ///* |
| // BorderRemover a = new BorderRemover(); |
| // try |
| // { |
| // a.createNewImageWithoutBorder(args[0], args[1]); |
| // } |
| // catch(java.io.IOException e) |
| // { |
| // System.out.println("Exception caught."); |
| // } |
| // */ |
| // } |
| |
| } |
| |
| |