GVKun编程网logo

在Java中调整BufferedImage的亮度和对比度(java设置屏幕亮度)

22

本文将分享在Java中调整BufferedImage的亮度和对比度的详细内容,并且还将对java设置屏幕亮度进行详尽解释,此外,我们还将为大家带来关于BufferedImage到JavaFX图像、Bu

本文将分享在Java中调整BufferedImage的亮度和对比度的详细内容,并且还将对java设置屏幕亮度进行详尽解释,此外,我们还将为大家带来关于BufferedImage到JavaFX图像、BufferedImage到Java中的BMP、BufferedImage纹理没有出现在java3D中、Java BufferedImage的基本用法的相关知识,希望对你有所帮助。

本文目录一览:

在Java中调整BufferedImage的亮度和对比度(java设置屏幕亮度)

在Java中调整BufferedImage的亮度和对比度(java设置屏幕亮度)

我正在使用某些框架处理一堆图像,而我得到的只是一堆BufferedImage对象。不幸的是,这些图像真的很暗,我想加亮它们并稍微调整对比度。

就像是:

BufferedImage image = something.getImage();image = new Brighten(image).brighten(0.3); // for 30%image = new Contrast(image).contrast(0.3);// ...

有任何想法吗?

答案1

小编典典

实际上,那很容易。

RescaleOp rescaleOp = new RescaleOp(1.2f, 15, null);rescaleOp.filter(image, image);  // Source and destination are the same.

scaleFactor1.2和offset15的A 似乎使停下来的图像更亮。

好极了!

在的文档中RescaleOp了解更多信息。

BufferedImage到JavaFX图像

BufferedImage到JavaFX图像

我有一个从主监视器截取的图像,因此我想将其添加到Java FX ImageView

@FXML
protected ImageView screenshot() throws AWTException,IOException {
    Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
    BufferedImage capture = new Robot().createScreenCapture(screenRect);
    ImageView imageView = new ImageView();
    Image image = capture; //Error
    imageView.setImage(image);
    return imageView;
}

我正在尝试将设置为BufferedImage capturejavafx.scene.image.Image image但是类型不兼容,也无法强制转换。我该如何纠正?

BufferedImage到Java中的BMP

BufferedImage到Java中的BMP

我有一个BufferedImage对象,我想将其编码为BMP格式并将其保存到磁盘。

我该怎么做呢?

JPEG它的确定:

BufferedImage img; //here is an image ready to be recorded into the hard disk
FileOutputStream fout = new FileOutputStream("image.jpg");

JPEGImageEncoder jencoder = JPEGCodec.createJPEGEncoder(fout);
JPEGEncodeParam enParam = jencoder.getDefaultJPEGEncodeParam(img);

enParam.setQuality(1.0F,true);
jencoder.setJPEGEncodeParam(enParam);
jencoder.encode(img);

fout.close();

BufferedImage纹理没有出现在java3D中

BufferedImage纹理没有出现在java3D中

如何解决BufferedImage纹理没有出现在java3D中?

| 我在java3D和stackoverflow上还是很新的。我的问题是我尝试将BufferedImage纹理添加到矩形,但它没有出现。我将BufferedImage保存到文件中,因此我确定它不为空。 \“ bi \”是BufferedImage。我能找到的关于java3D的一切似乎都已经过时了。注释是关于上面的命令,而不是下面的命令。
    QuadArray alap = new QuadArray(4,QuadArray.COORDINATES | GeometryArray.TEXTURE_COORDINATE_2);

    // [...] setting coordinates for the polygon (rectangle)

    Appearance alapAppearance = new Appearance();
    polygonAttributes alapPa = new polygonAttributes();

    alapAppearance.setpolygonAttributes(alapPa);

    alap.setTextureCoordinate (0,new TexCoord2f(0.0f,0.0f));
    alap.setTextureCoordinate (0,1,new TexCoord2f(1.0f,2,1.0f));
    alap.setTextureCoordinate (0,3,1.0f));
    //tryed in different order

    TextureAttributes texAttr = new TextureAttributes();
    texAttr.setTextureMode(TextureAttributes.REPLACE);
    TextureLoader loader = new TextureLoader(bi,TextureLoader.ALLOW_NON_POWER_OF_TWO);
    //Tryed with \"RGB\" flag too (as second parameter).
    Texture t1 = loader.getTexture();

t1.setBoundaryModeS(Texture.CLAMP_TO_EDGE);
t1.setBoundaryModeT(Texture.CLAMP_TO_EDGE);

    alapAppearance.setCapability(Appearance.ALLOW_TEXTURE_WRITE);
    alapAppearance.setCapability(Appearance.ALLOW_TEXTURE_ATTRIBUTES_WRITE);
    //I don\''t think it\''s really needed,but can\''t hurt I quess.
    alapAppearance.setTextureAttributes(texAttr);
    alapAppearance.setTexture(t1);

    tfg.addChild(new Shape3D(alap,alapAppearance));
    //tfg = transformGroup
    

解决方法

好的,我已经找到了解决方案。看来TextureLoader.ALLOW_NON_POWER_OF_TWO使纹理加载器加载没有2大小幂的纹理,但是java3d仍然不会在多边形上拉伸它。可能也为此设置了一个标志,因为加载无法使用的纹理似乎毫无意义。     

Java BufferedImage的基本用法

Java BufferedImage的基本用法

1:读取本地图片:

       File file = new File(”001.jpg“);//本地图片

       BufferedImage image=(BufferedImage)ImageIO.read(file);

2:读取一张网上图片:

      URL url= new URL(”http://*******“);//url 为图片的URL 地址

     BufferedImage image=(BufferedImage)ImageIO.read(url);

3:获取图片的每个像素点的像素值(获取个点像素值是后期图片操作的基础):

     //获取图像的宽度和高度
     int width = bi.getWidth();
     int height = bi.getHeight();
     int [] pot = new int[width*height];
     
     int k=0;
     for(int i=0;i<height;i++){
       for(int j=0;j<width;j++){//行扫描
        pot[k] = bi.getRGB(j, i);
          k++;
      System.out.println(pot[i]);
    }

4:计算图片保存后的大小:

    要计算图片保存时的大小,一种简单的方法就是计算图片的输出刘的大小;将输出流转为 一个 byte 数组;然后计算数组的长度:

   image=(BufferedImage)ImageIO.read(url);
  ByteArrayOutputStream out =new ByteArrayOutputStream();
   ImageIO.write(image,"png",out);//png 为要保存的图片格式
  byte[] barray = out.toByteArray();

  out.close();

System.out.println(barray.length)

 

//获取文件的类型
                    String fileType = faceImg.substring(faceImg.lastIndexOf(".") + 1, faceImg.length());
                    //获取文件名称
                    String fileName = faceImg.substring(faceImg.lastIndexOf("/") + 1, faceImg.length());

                    //把地址转换成URL对象
                    URL url = new URL(faceImg);
                    //读取图片到缓冲数组中
                    BufferedImage image = ImageIO.read(url);
                    ByteArrayOutputStream out = new ByteArrayOutputStream();
                    //把文件写到输出流中
                    ImageIO.write(image, fileType, out);
                    //创建一个输入流
                    InputStream inputStream = new ByteArrayInputStream(out.toByteArray());
                    //获取图片的具体类型
                    String contentType = AliyunOSSUtil.contentType(fileType);

                    //上传阿里云
                    AliyunOssResult result = AliyunOSSUtil.upload(inputStream, contentType, fileName);

 

今天关于在Java中调整BufferedImage的亮度和对比度java设置屏幕亮度的分享就到这里,希望大家有所收获,若想了解更多关于BufferedImage到JavaFX图像、BufferedImage到Java中的BMP、BufferedImage纹理没有出现在java3D中、Java BufferedImage的基本用法等相关知识,可以在本站进行查询。

本文标签: