标签: bufferedimage

使用Graphics2D覆盖BufferedImage上的文本并返回BufferedImage

我已经检查了类似命名的问题,但他们没有回答这个用例.

基本上,我是在一个给定的坐标(x,y)上叠加一些文本(文本)我在包中有以下功能;

protected BufferedImage Process2(BufferedImage image){
    Graphics2D gO = image.createGraphics();
    gO.setColor(Color.red);
    gO.setFont(new Font( "SansSerif", Font.BOLD, 12 ));
    gO.drawString(this.text, this.x, this.y);
    System.err.println(this.text+this.x+this.y);
    return image;
}
Run Code Online (Sandbox Code Playgroud)

我觉得我错过了一些显而易见的东西; 我可以找到的每一个对Graphics2D的引用都是处理游戏或直接写入文件,但我只想要返回一个BufferedImage.覆盖'渲染'

在当前代码中,图像显示为未更改.

谢谢!

java bufferedimage graphics2d

41
推荐指数
1
解决办法
7万
查看次数

Bufferedimage调整大小

我正在尝试调整缓冲图像的大小.我能够存储它并显示在一个jframe没有问题,但我似乎无法调整大小.有关如何更改此功能以使其工作并将图像显示为200*200文件的任何提示都会很棒

private void profPic(){
    String path = factory.getString("bottle");
    BufferedImage img = ImageIO.read(new File(path));
}


public static BufferedImage resize(BufferedImage img, int newW, int newH) {  
    int w = img.getWidth();  
    int h = img.getHeight();  
    BufferedImage dimg = new BufferedImage(newW, newH, img.getType());  
    Graphics2D g = dimg.createGraphics();  
    g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
    RenderingHints.VALUE_INTERPOLATION_BILINEAR);  
    g.drawImage(img, 0, 0, newW, newH, 0, 0, w, h, null);  
    g.dispose();  
    return dimg;  
}  
Run Code Online (Sandbox Code Playgroud)

java bufferedimage

41
推荐指数
3
解决办法
9万
查看次数

如何在java中正确加载BufferedImage?

好的,所以我一直在尝试使用以下代码加载BufferedImage:

URL url = this.getClass().getResource("test.png");
BufferedImage img = (BufferedImage) Toolkit.getDefaultToolkit().getImage(url);
Run Code Online (Sandbox Code Playgroud)

当我运行它时,这给了我一个类型转换错误,那么如何正确加载BufferedImage?

java bufferedimage image loading

40
推荐指数
2
解决办法
6万
查看次数

"&0xff"有什么作用?

我试图理解下面的代码,其中b给定的整数image是一个图像.

据我所知,如果给定点i,j的RGB值大于b,则将该像素设置为白色,否则设置为黑色.所以会将图像转换为黑白图像.

但是我迷失了什么(&0xff)实际上,我猜它是一种二元转换?

if ((image.getRGB(i, j) & 0xff) > b) {
    image.setRGB(i, j, 0xffffff) ;
} else {
    image.setRGB(i, j, 0x000000);
}
Run Code Online (Sandbox Code Playgroud)

java bufferedimage

39
推荐指数
3
解决办法
5万
查看次数

从文件创建BufferedImage并使其成为TYPE_INT_ARGB

我有一个带有透明度的PNG文件,它被加载并存储在一个BufferedImage.我需要这BufferedImage是的TYPE_INT_ARGB.但是,当我使用getType()返回值时,0(TYPE_CUSTOM)而不是2(TYPE_INT_ARGB).

这是我加载的方式.png:

public File img = new File("imagen.png");

public BufferedImage buffImg = 
    new BufferedImage(240, 240, BufferedImage.TYPE_INT_ARGB);

try { 
    buffImg = ImageIO.read(img ); 
} 
catch (IOException e) { }

System.out.Println(buffImg.getType()); //Prints 0 instead of 2
Run Code Online (Sandbox Code Playgroud)

如何加载.png,保存BufferedImage并制作TYPE_INT_ARGB

java bufferedimage image-manipulation image argb

32
推荐指数
2
解决办法
12万
查看次数

了解BufferedImage.getRGB输出值

我使用此方法获取图像中像素的整数值:

int colour = img.getRGB(x, y);
Run Code Online (Sandbox Code Playgroud)

然后我打印出值,我看到黑色像素对应的值如"-16777216",一种蓝色的像"-16755216"等等.有人可以解释一下这个值背后的逻辑吗?

java rgb bufferedimage colors image-processing

32
推荐指数
4
解决办法
6万
查看次数

在opencv中将BufferedImage转换为Mat

如何在OpenCV中将BufferedImage转换为Mat?我使用java包装器的OpenCV(而不是JavaCV).由于我是OpenCV的新手,我在理解Mat的工作方式时遇到了一些问题.

我想做这样的事情.(根据Ted W.回复):

          BufferedImage image = ImageIO.read(b.getClass().getResource("Lena.png"));

          int rows = image.getWidth();
          int cols = image.getHeight();
          int type = CvType.CV_16UC1;
          Mat newMat = new Mat(rows,cols,type);

          for(int r=0; r<rows; r++){
              for(int c=0; c<cols; c++){
                  newMat.put(r, c, image.getRGB(r, c));
              }
          }

          Highgui.imwrite("Lena_copy.png",newMat);
Run Code Online (Sandbox Code Playgroud)

这不起作用."Lena_copy.png"只是一张尺寸正确的黑色照片.

java opencv bufferedimage mat

28
推荐指数
3
解决办法
4万
查看次数

如何检查上传的文件是图像还是其他文件?

在我的Web应用程序中,我有一个图像上传模块.我想检查上传的文件,无论是图像文件还是任何其他文件.我在服务器端使用Java.

图像BufferedImage在java中读取,然后我将其写入磁盘ImageIO.write()

我该如何检查BufferedImage,无论是真的是图像还是其他什么?

任何建议或链接将不胜感激.

java bufferedimage servlets file-upload image

27
推荐指数
3
解决办法
5万
查看次数

如何在Java/Groovy中将InputStream转换为BufferedImage?

是的,我是那么傻.我试图从各种食谱配方中将一些groovy代码粘在一起,我无法从Java/Groovy中的InputStream到BufferedImage.谷歌目前不是我的朋友.

java groovy bufferedimage inputstream

27
推荐指数
1
解决办法
3万
查看次数

旋转BufferedImage时如何产生清晰的绘画效果?

一种尝试的方法是使用TexturePaintg.fillRect()绘制图像.然而,这需要您在每次绘制图像时创建一个新的TexturePaint和Rectangle2D对象,这是不理想的 - 并且无论如何都没有帮助.

当我使用时g.drawImage(BufferedImage,...),旋转的图像看起来模糊/柔和.

我熟悉RenderingHints和双缓冲(我认为这就是我正在做的事情),我发现很难相信你不能轻易有效地在Java中旋转产生尖锐结果的图像.

使用代码TexturePaint看起来像这样.

Grahics2D g2d = (Graphics2D)g; 
g2d.setPaint(new TexturePaint(bufferedImage, new Rectangle2D.Float(0,0,50,50)));
g2d.fillRect(0,0,50,50);
Run Code Online (Sandbox Code Playgroud)

我正在用AffineTransform一把牌旋转成一个风扇.什么是快速绘制好看图像的最佳方法?

这是一个截图:
模糊旋转的示例
9是清脆的,但其余的卡肯定不那么尖锐.

问题可能出在我创建每张卡片图像并将其存储在数组中时.
这就是我现在正在做的事情:

// i from 0 to 52, card codes.
...
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gs = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = gs.getDefaultConfiguration();
BufferedImage img = gc.createCompatibleImage(86, 126, Transparency.TRANSLUCENT);

    Graphics2D g = img.createGraphics();
    setRenderingHints(g);
    g.drawImage(shadow, 0, 0, 86, 126, null);
    g.drawImage(white, 3, 3, 80, 120, null);
    g.drawImage(suit, 3, 3, 80, …
Run Code Online (Sandbox Code Playgroud)

java interpolation bufferedimage transformation transform

25
推荐指数
2
解决办法
3066
查看次数