最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實現(xiàn)摳圖片文字或簽名的完整代碼

 更新時間:2022年06月23日 11:58:59   作者:卑微小鐘  
這篇文章主要介紹了java摳圖片文字或簽名的運行原理,本文分步驟通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

java摳圖片文字或簽名

運行原理

第一步 遍歷像素點

BufferedImage image = ImageIO.read(new File(input));
// 圖片透明度
int alpha = 0;
// 最小
int maxX = 0, maxY = 0;
// 最大
int minX = image.getWidth(), minY = image.getHeight();

for (int y = image.getMinY(); y < image.getHeight(); y++) {
// 內(nèi)層遍歷是X軸的像素
for (int x = image.getMinX(); x < image.getWidth(); x++) {
int rgb = image.getRGB(x, y);
// 對當(dāng)前顏色判斷是否在指定區(qū)間內(nèi)
if (!colorInRange(rgb)) {
minX = minX > x ? x : minX;
minY = minY > y ? y : minY;
maxX = maxX < x ? x : maxX;
maxY = maxY < y ? y : maxY;
}
}
}

第二步 判斷像素是否是黑色或者指定顏色

// 判斷是背景還是內(nèi)容
public static boolean colorInRange(int color) {
// 獲取color(RGB)中R位
int red = (color & 0xff0000) >> 16;
// 獲取color(RGB)中G位
int green = (color & 0x00ff00) >> 8;
// 獲取color(RGB)中B位
int blue = (color & 0x0000ff);
// 通過RGB三分量來判斷當(dāng)前顏色是否在指定的顏色區(qū)間內(nèi)
if (red >= color_range && green >= color_range && blue >= color_range) {
return true;
}
return false;
}

第三步 統(tǒng)計 選取圖像的像素點最小坐標(biāo)或最大坐標(biāo)

minX = minX > x ? x : minX;
minY = minY > y ? y : minY;
maxX = maxX < x ? x : maxX;
maxY = maxY < y ? y : maxY;

第四步 新建畫布(長度和高度=最大像素點-最小像素點)

BufferedImage bufferedImage = new BufferedImage(maxX - minX, maxY - minY, BufferedImage.TYPE_4BYTE_ABGR);

第五步 畫圖

for (int x = bufferedImage.getMinX(); x < bufferedImage.getWidth(); x++) {
// 內(nèi)層遍歷是X軸的像素
for (int y = bufferedImage.getMinX(); y < bufferedImage.getHeight(); y++) {
int rgb = image.getRGB(x + minX, y + minY);
if (!colorInRange(rgb)) {
// 設(shè)置為不透明
alpha = 255;
// #AARRGGBB 最前兩位為透明度
rgb = (alpha << 24) | (0x000000);//黑色構(gòu)圖
bufferedImage.setRGB(x, y, rgb);
}
}
}

// 生成圖片為PNG
ImageIO.write(bufferedImage, "png", new File(output));
// 輸出圖片坐標(biāo)
System.out.println(minX + " " + minY + " " + maxX + " " + maxY);

完整代碼

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class Main {
    //識別顏色度數(shù)
    public static int color_range = 100;

    public static void recognize(String input, String output) throws IOException {
        BufferedImage image = ImageIO.read(new File(input));
        // 圖片透明度
        int alpha = 0;
        // 最小
        int maxX = 0, maxY = 0;
        // 最大
        int minX = image.getWidth(), minY = image.getHeight();

        for (int y = image.getMinY(); y < image.getHeight(); y++) {
            // 內(nèi)層遍歷是X軸的像素
            for (int x = image.getMinX(); x < image.getWidth(); x++) {
                int rgb = image.getRGB(x, y);
                // 對當(dāng)前顏色判斷是否在指定區(qū)間內(nèi)
                if (!colorInRange(rgb)) {
                    minX = minX > x ? x : minX;
                    minY = minY > y ? y : minY;
                    maxX = maxX < x ? x : maxX;
                    maxY = maxY < y ? y : maxY;
                }

            }
        }
        BufferedImage bufferedImage = new BufferedImage(maxX - minX, maxY - minY, BufferedImage.TYPE_4BYTE_ABGR);
        for (int x = bufferedImage.getMinX(); x < bufferedImage.getWidth(); x++) {
            // 內(nèi)層遍歷是X軸的像素
            for (int y = bufferedImage.getMinX(); y < bufferedImage.getHeight(); y++) {
                int rgb = image.getRGB(x + minX, y + minY);
                if (!colorInRange(rgb)) {
                    // 設(shè)置為不透明
                    alpha = 255;
                    // #AARRGGBB 最前兩位為透明度
                    rgb = (alpha << 24) | (0x000000);//黑色構(gòu)圖
                    bufferedImage.setRGB(x, y, rgb);
                }
            }
        }

        // 生成圖片為PNG
        ImageIO.write(bufferedImage, "png", new File(output));
        // 輸出圖片坐標(biāo)
        System.out.println(minX + " " + minY + " " + maxX + " " + maxY);
    }

    // 判斷是背景還是內(nèi)容
    public static boolean colorInRange(int color) {
        // 獲取color(RGB)中R位
        int red = (color & 0xff0000) >> 16;
        // 獲取color(RGB)中G位
        int green = (color & 0x00ff00) >> 8;
        // 獲取color(RGB)中B位
        int blue = (color & 0x0000ff);
        // 通過RGB三分量來判斷當(dāng)前顏色是否在指定的顏色區(qū)間內(nèi)
        if (red >= color_range && green >= color_range && blue >= color_range) {
            return true;
        }
        return false;
    }

    public static void main(String[] args) throws IOException {
        recognize("E:/tmp/demo1.jpg","E:/tmp/demo1_1.jpg");
    }
}

到此這篇關(guān)于java摳圖片文字或簽名的文章就介紹到這了,更多相關(guān)java摳圖簽名內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談JVM之類的加載鏈接和初始化

    淺談JVM之類的加載鏈接和初始化

    有了java class文件之后,為了讓class文件轉(zhuǎn)換成為JVM可以真正運行的結(jié)構(gòu),需要經(jīng)歷加載,鏈接和初始化的過程。這三個過程是怎么工作的呢?在本文中你將會找到答案。
    2021-06-06
  • java中File類的構(gòu)造函數(shù)及其方法

    java中File類的構(gòu)造函數(shù)及其方法

    這篇文章主要介紹了java中File類的構(gòu)造函數(shù)及其方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-06-06
  • Java實現(xiàn)指定目錄下的文件查找詳解

    Java實現(xiàn)指定目錄下的文件查找詳解

    這篇文章主要介紹了利用Java實現(xiàn)指定目錄下的文件查找的方法,能做到給出文件名,查找目錄及其子目錄中是否存在或者給出后綴名,查找目錄及其子目錄中相關(guān)的文件,感興趣的可以學(xué)習(xí)一下
    2022-03-03
  • 解決idea中yml文件不識別的問題

    解決idea中yml文件不識別的問題

    這篇文章主要介紹了解決idea中yml文件不識別的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • Spring Cloud Alibaba Nacos Config配置中心實現(xiàn)

    Spring Cloud Alibaba Nacos Config配置中心實現(xiàn)

    這篇文章主要介紹了Spring Cloud Alibaba Nacos Config配置中心實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • Java?EasyExcel導(dǎo)出合并單元格的示例詳解

    Java?EasyExcel導(dǎo)出合并單元格的示例詳解

    EasyExcel是阿里巴巴開源的一個excel處理框架,以使用簡單、節(jié)省內(nèi)存著稱,這篇文章主要為大家介紹了如何利用EasyExcel導(dǎo)出合并單元格,需要的可以參考下
    2023-09-09
  • SpringBoot中到底該如何解決跨域問題

    SpringBoot中到底該如何解決跨域問題

    跨域問題更是老生常談,隨便用標(biāo)題去google或百度一下,能搜出一大片解決方案,這篇文章主要給大家介紹了關(guān)于SpringBoot中到底該如何解決跨域問題的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • 詳解 Java Maximum redirects (100) exceeded

    詳解 Java Maximum redirects (100) exceeded

    這篇文章主要介紹了詳解 Java Maximum redirects (100) exceeded的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Java創(chuàng)建ZIP壓縮文件的方法

    Java創(chuàng)建ZIP壓縮文件的方法

    這篇文章主要介紹了Java創(chuàng)建ZIP壓縮文件的方法,實例分析了java創(chuàng)建zip文件的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • java使用多線程找出最大隨機數(shù)

    java使用多線程找出最大隨機數(shù)

    這篇文章主要為大家詳細(xì)介紹了java使用多線程找出最大隨機數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07

最新評論

于都县| 葵青区| 黄冈市| 元谋县| 利川市| 克拉玛依市| 肇庆市| 北宁市| 宁夏| 通化县| 大洼县| 望谟县| 竹溪县| 沂南县| 沂南县| 南川市| 鹤壁市| 钦州市| 榆社县| 云南省| 东山县| 五莲县| 乐昌市| 威远县| 巨野县| 墨竹工卡县| 闽清县| 海南省| 镇康县| 屯昌县| 蓝山县| 义马市| 蒙城县| 梁平县| 平邑县| 岢岚县| 新津县| 北票市| 彰化市| 惠水县| 望江县|