Java BufferedImage Trim trimImage(BufferedImage imageToTrim)

Here you can find the source of trimImage(BufferedImage imageToTrim)

Description

This method trims the input image and returns it as a BufferedImage

License

Apache License

Parameter

Parameter Description
imageToTrim input image that will be trimed

Return

return trimed input image as BufferedImage

Declaration

public static BufferedImage trimImage(BufferedImage imageToTrim) 

Method Source Code

//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;
    }
}

Related

  1. trim(BufferedImage image, Rectangle trimRect)
  2. trim(BufferedImage img)
  3. trim(final BufferedImage img)
  4. trimAroundCenter(BufferedImage img, Point center, Color bgColor)
  5. trimImage(BufferedImage image)
  6. trimImageHorizontally(BufferedImage image, boolean trimFromEnd, int maxToTrim)
  7. trimImageVerticallyHelper(BufferedImage image, int maxToTrim)
  8. trimImg(BufferedImage img, Color backgroundColor)
  9. trimLockdown(BufferedImage Img, int y1)