Here you can find the source of trimImage(BufferedImage imageToTrim)
Parameter | Description |
---|---|
imageToTrim | input image that will be trimed |
public static BufferedImage trimImage(BufferedImage imageToTrim)
//package com.java2s; /**/*from w w w.j a va 2 s . com*/ * Copyright 2010 Neuroph Project http://neuroph.sourceforge.net * * Licensed 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. */ import java.awt.image.BufferedImage; public class Main { /** * This method trims the input image and returns it as a BufferedImage * @param imageToTrim input image that will be trimed * @return return trimed input image as BufferedImage */ public static BufferedImage trimImage(BufferedImage imageToTrim) { int y1 = trimLockup(imageToTrim); int y2 = trimLockdown(imageToTrim, y1); int x1 = 0; int x2 = imageToTrim.getWidth(); return imageToTrim.getSubimage(x1, y1, x2 - x1, y2 - y1); } /** * This method reads the image pixels until it reads the first black pixel * by height and then returns that value * @param Img - input image that will be read * @return - returns the value of height when conditions are true */ private static int trimLockup(BufferedImage Img) { for (int j = 0; j < Img.getHeight(); j++) { for (int i = 0; i < Img.getWidth(); i++) { if (Img.getRGB(i, j) == -16777216) { return j; } } } return 0; } /** * This method reads the input image from the input from * start pixel height (y1) until it reads the first next row * where all pixel are white by height and return that value * @param Img - input image that will be read * @param y1 - input start height pixel of image * @return - returns the value of height when conditions are true */ private static int trimLockdown(BufferedImage Img, int y1) { for (int j = y1 + 1; j < Img.getHeight(); j++) { int counterWhite = 0; for (int i = 0; i < Img.getWidth(); i++) { if (Img.getRGB(i, j) == -1) { counterWhite++; } } if (counterWhite == Img.getWidth()) { //this is a chek for dots over the letters i and j //so they wont be missread as dots if (j > (Img.getHeight() / 2)) { return j; } } if (j == Img.getHeight() - 1) { return j + 1; } } return 0; } }