转:java提取图片中的像素

本文转自:http://www.infosys.tuwien.ac.at/teaching/courses/WebEngineering/References/java/docs/api/java/awt/image/PixelGrabber.html

PixelGrabber 类实现可以附加在 Image 或 ImageProducer 对象上获得图像像素子集的 ImageConsumer。下面是一个示例:

 public 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 void handlepixels(Image img, int x, int y, int w, int h) {
        int[] pixels = new int[w * h];
        PixelGrabber pg = new PixelGrabber(img, x, y, w, h, pixels, 0, w);
        try {
            pg.grabPixels();
        } catch (InterruptedException e) {
            System.err.println("interrupted waiting for pixels!");
            return;
        }
        if ((pg.getStatus() & ImageObserver.ABORT) != 0) {
            System.err.println("image fetch aborted or errored");
            return;
        }
        for (int j = 0; j < h; j++) {
            for (int i = 0; i < w; i++) {
                handlesinglepixel(x+i, y+j, pixels[j * w + i]);
            }
        }
 }

  

PixelGrabber

public PixelGrabber(Image img,
                    int x,
                    int y,
                    int w,
                    int h,
                    int[] pix,
                    int off,
                    int scansize)
创建一个 PixelGrabber 对象,以从指定图像将像素矩形部分 (x, y, w, h) 抓取到给定的数组中。以默认的 RGB ColorModel 形式将像素存储到数组中。像素 (i, j)((i, j) 处于矩形 (x, y, w, h) 内)的 RGB 数据存储在数组中的 pix[(j - y) * scansize + (i - x) + off] 位置处。

参数:
img - 从中检索像素的图像
x - 从图像中进行检索的像素矩形左上角 x 坐标,其相对于默认(未缩放)图像大小
y - 从图像中进行检索的像素矩形左上角 y 坐标
w - 要检索的像素矩形的宽度
h - 要检索的像素矩形的高度
pix - 用于保存从图像中检索的 RGB 像素的整数数组
off - 数组中存储第一个像素的偏移量
scansize - 数组中一行像素到下一行像素之间的距离
另请参见:
ColorModel.getRGBdefault()

PixelGrabber

public PixelGrabber(ImageProducer ip,
                    int x,
                    int y,
                    int w,
                    int h,
                    int[] pix,
                    int off,
                    int scansize)
创建一个 PixelGrabber 对象,以从指定 ImageProducer 所生成的图像中将像素矩形部分 (x, y, w, h) 抓取到给定的数组中。以默认的 RGB ColorModel 形式将像素存储到数组中。像素 (i, j)((i, j) 处于矩形 (x, y, w, h) 内)的 RGB 数据存储在数组中的 pix[(j - y) * scansize + (i - x) + off] 位置处。

参数:
ip - 生成图像的 ImageProducer,从该图像中检索像素
x - 从图像中进行检索的像素矩形左上角 x 坐标,其相对于默认(未缩放)图像大小
y - 从图像中进行检索的像素矩形左上角 y 坐标
w - 要检索的像素矩形的宽度
h - 要检索的像素矩形的高度
pix - 用于保存从图像中检索的 RGB 像素的整数数组
off - 数组中存储第一个像素的偏移量
scansize - 数组中一行像素到下一行像素之间的距离
另请参见:
ColorModel.getRGBdefault()

PixelGrabber

public PixelGrabber(Image img,
                    int x,
                    int y,
                    int w,
                    int h,
                    boolean forceRGB)
创建一个 PixelGrabber 对象,以从指定的图像中抓取像素矩形部分 (x, y, w, h)。如果每次调用 setPixels 都使用相同的 ColorModel,则像素以原 ColorModel 形式存储,否则像素将以默认 RGB ColorModel 形式存储。如果 forceRGB 参数为 true,则像素将总是以默认 RGB ColorModel 形式存储。无论是哪种情况,PixelGrabber 都会分配一个缓冲区来保存这些像素。如果 (w < 0) 或 (h < 0),则它们默认为传递信息时保存的源数据的宽度和高度。

参数:
img - 要从中检索图像数据的图像
x - 从图像中进行检索的像素矩形左上角 x 坐标,其相对于默认(未缩放)图像大小
y - 从图像中进行检索的像素矩形左上角 y 坐标
w - 要检索的像素矩形的宽度
h - 要检索的像素矩形的高度
forceRGB - 如果总是应该将像素转换为默认 RGB ColorModel,则为 true

grabPixels

public boolean grabPixels()
                   throws InterruptedException
请求 Image 或 ImageProducer 开始传递像素,并等待传递完相关矩形中的所有像素。

返回:
如果成功抓取了像素,则返回 true;在中止、有错误或超时的情况下返回 false
抛出:
InterruptedException - 另一个线程中断了此线程。
时间: 2024-10-05 23:52:19

转:java提取图片中的像素的相关文章

Java提取字符串中的手机号

java通过正则表达式提取字符串中的手机号,简单快速方便,能提取多个手机号 public String getTelnum(String sParam){ if(sParam.length()<=0) return ""; Pattern pattern = Pattern.compile("(1|861)(3|5|8)\\d{9}$*"); Matcher matcher = pattern.matcher(sParam); StringBuffer bf

&lt;&lt;&lt; Java提取网页源码

package com.sevennight; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; public class zidongwenzi { /** * @param args * @param * @throws IOException

Java提取网站后台数据进行处理并排名

Java提取网站后台数据进行处理并排名 一.网页分析 截取的网站链接为:https://www.tiobe.com/tiobe-index/ 打开网站后,可以看到这个网站的编程语言排名情况.我们选择下图中的图表,这个图表中有2001-2019年的编程语言每个月的使用率,我需要它的数据. 二.数据提取 在网页点右键,点击查看源码:首先我们要编程把源码下载到记事本里,看一下核心代码 1 URL url = new URL(website); 2 // 根据链接(字符串格式),生成一个URL对象 3

【C】用C语言提取bmp图片像素,并进行K-means聚类分析——容易遇到的问题

关于bmp图片的格式,网上有很多文章,具体可以参考百度百科,也有例子程序.这里只提要注意的问题. (1)结构体定义问题:首先按照百度百科介绍的定义了结构体,但是编译发现重定义BITMAPFILEHEADER等.其实只要包含了Windows.h,里面的wingdi.h就已经定义了处理bmp的结构体,故不需要自己再重复定义. (2)读取文件的字节对其问题:要使用#pragma pack (1)来方便读取文件头的结构体,否则结构体的大小会由于字节对齐问题改变.不知是否头文件中已经使用了该宏,在我的代码

Java 提取Word中的文本和图片

本文将介绍通过Java来提取或读取Word文档中文本和图片的方法.这里提取文本和图片包括同时提取文档正文当中以及页眉.页脚中的的文本和图片. 使用工具:Free Spire.Doc for Java (免费版) Jar文件导入方法(参考): 方法1:下载jar文件包.下载后解压文件,并将lib文件夹下的Spire.Doc.jar文件导入到java程序.导入效果参考如下: 方法2:可通过maven导入.参考导入方法. 测试文档如下: Java代码示例(供参考) [示例1]提取Word中的文本 im

【图像处理】提取图片中的交点数据

1. 前言 前两天老板突然给了一幅图像数据, 让我提取出其中的交点信息, 图片是这样的: 由于图像数据实在太大,就传了一张截图上来~~ 2. 处理思路 2.1 基本需求 我们的需求实际上就是, 提取图像中黑色线段相交的部分(简单来说就是相交的点) 2.2 基本思路 检测图像中的黑色直线部分, 根据hough变换提取出相应的直线方程, 根据直线方程求出他们的交点, 即为我们所需要的点.由于处理的时候, 存在一定误差, 所以一般可以分为两个步骤, 先粗略的寻找一个交点, 然后对他的周围进行搜素即可.

Frozen UI中提取的半像素边框

<style> .pxc { <!-- border-top: 1px solid #e0e0e0; --> background-position: left top; background-image:linear-gradient(to top, transparent 0%,transparent 50%,#e0e0e0 50%,#e0e0e0 100%); background-image: -ms-linear-gradient(bottom, transparent

OpenCV_提取图片中任意形状的区域

转载自:http://blog.csdn.net/hanbinga17/article/details/6536331# ---------------------------------------------------------------------------------------------------------------------------------------------- 正在做一个基于内容的图像检索项目,客户要求可以让用户提取图片上的任意形状的子图作为输入.为了

java提取url里的域名

使用java标准类库java.net.URL java.net.URL url = new java.net.URL("http://blog.csdn.net/xxx.png"); String host = url.getHost();// 获取主机名 System.out.println("host:"+host);// 结果 blog.csdn.net 原文地址:https://www.cnblogs.com/UniqueColor/p/9100767.ht