Converting `BufferedImage` to `Mat` in OpenCV

I also was trying to do the same thing, because of need to combining image processed with two libraries. And what I’ve tried to do is to put byte[] in to Mat instead of RGB value. And it worked! So what I did was: 1.Converted BufferedImage to byte array with: byte[] pixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData(); … Read more

How to check a uploaded file whether it is an image or other file?

I’m assuming that you’re running this in a servlet context. If it’s affordable to check the content type based on just the file extension, then use ServletContext#getMimeType() to get the mime type (content type). Just check if it starts with image/. String fileName = uploadedFile.getFileName(); String mimeType = getServletContext().getMimeType(fileName); if (mimeType.startsWith(“image/”)) { // It’s an … Read more

Is storing Graphics objects a good idea?

No, storing a Graphics object is usually a bad idea. 🙂 Here’s why: Normally, Graphics instances are short-lived and is used to paint or draw onto some kind of surface (typically a (J)Component or a BufferedImage). It holds the state of these drawing operations, like colors, stroke, scale, rotation etc. However, it does not hold … Read more

Using Graphics2D to overlay text on a BufferedImage and return a BufferedImage

The method drawString() uses x and y for the leftmost character’s baseline. Numbers typically have no descenders; if the same is true of text, a string drawn at position (0,0) will be rendered entirely outside the image. See this example. Addendum: You may be having trouble with an incompatible color model in your image. One … Read more

What does “& 0xff” do?

It’s a so-called mask. The thing is, you get the RGB value all in one integer, with one byte for each component. Something like 0xAARRGGBB (alpha, red, green, blue). By performing a bitwise-and with 0xFF, you keep just the last part, which is blue. For other channels, you’d use: int alpha = (rgb >>> 24) … Read more