Unable to load image from the same package in Java? - java

In my java package, I have a file called 'prog.ico'. I'm trying to load this file, via the following code:
java.net.URL url = this.getClass().getResource("prog.ico");
java.awt.Image image = ImageIO.read( url );
System.out.println("image: " + image);
This gives the output:
image: null
What am I doing wrong? The .ico file exists in the same package as the class from which I'm running this code.

It seems that the .ico image format is not supported. See this question and it's answer to get around this.
To prevent link rot: This solution recommends using Image4J to process .ico files.

I've written a plugin for ImageIO that adds support for .ICO (MS Windows Icon) and .CUR (MS Windows Cursor) formats.
You can get it from GitHub here: https://github.com/haraldk/TwelveMonkeys/tree/master/imageio/imageio-ico
After you have it installed the plugin, you should be able to read your icon using the code in your original post.

I thing you must go over FileInputStream to wrap the file
File file = new File("prog.ico");
FileInputStream fis = new FileInputStream(file);
BufferedImage image = ImageIO.read(fis); //reading the image file

Related

Java getResourceAsStream is loading a previous version of desired file but not the most recently created file

Hi I'm following this tutorial, to load an image I created, on my webpage.
Here's the code I use to load the image
#GetMapping(
value="/download",
produces = MediaType.IMAGE_JPEG_VALUE
)
public #ResponseBody byte[] getDownload() throws IOException{
InputStream in = getClass().getResourceAsStream("/static/images/collage.jpeg");
return IOUtils.toByteArray(in);
}
Here's how I create the collage.jpeg file
// delete previous file
File file = new File("src/main/resources/static/images/collage.jpeg");
if(file.exists())
file.delete();
// Write the collage to a the desired file.
ImageIO.write(collage, "jpeg", file);
The issue I'm having is that when I access the /download endpoint it's retrieving the most previous version of collage.jpeg and not the most recently created one. collage is a BufferedImage object which I use ImageIO to write to the directory.
Can anyone explain to me why this is happening and what I can do to fix it?
Thanks.

How to add the album art to a .mp3 file using mp3agic?

I have been trying to set the album art of a mp3 file using the mp3agic library in java. The following code snippet is what i used to do so. Unfortunately this isnt working. The saved image file does not contain the album art nor the set title. Also, the program compiles with no error.
File img = new File("img.jpg");
imgLink[1]="http://"+imgLink[1];
URL url = new URL(imgLink[1]);
FileUtils.copyURLToFile(url, img);
byte[] bytes = new byte[(int) img.length()];
id3v2Tag.setTitle("Something");
id3v2Tag.setAlbumImage(bytes, "image/jpg");
mp3file.save("something.mp3");
Any help regarding this issue would be much appreciated.
The above code works. It wasn't showing properly on the folder I was working with. When I opened the file with iTunes it showed up. It's probably some fault with windows.

Java read different type of image formats jpg,tif,gif,png

I am trying to read some image files jpg, tif, gif, png and need to save files and create icons.
And i am getting UnsupportedTypeException.
ImageIO.read(file);
If i use following line, as earlier discuss in form.
BufferedImage img = JPEGCodec.createJPEGDecoder(inputStream).decodeAsBufferedImage();
I get JPEGCodec cannot found symbol.
I am using netbean 7.0.1. I have also added jai-imageio.jar.
By default, ImageIO can only read JPG, GIF and PNG file formats, if I remember right. To add new formats like TIFF, you need to add a plugin, which is a jar file, to your classpath, and to add an ImageIO.scanForPlugins() to you code before you try to read a file.
Example of plugin:
http://ij-plugins.sourceforge.net/plugins/imageio/
Try "ImageIO plugins" in Google.
JAI-ImageIO does include plugins for file formats like TIFF, so in principal what you are trying to do should work. However, to install JAI-ImageIO it's not enough to add it to your classpath. See the complete installation instructions here: http://java.sun.com/products/java-media/jai/INSTALL-jai_imageio_1_0_01.html
Fr detail we can see the like
http://www.randelshofer.ch/blog/2011/08/reading-cmyk-jpeg-images-with-java-imageio/
Image img = null;
ImageInputStream iis = new FileImageInputStream(file);
try {
for (Iterator<ImageReader> i = ImageIO.getImageReaders(iis);
img == null && i.hasNext(); ) {
ImageReader r = i.next();
try {
r.setInput(iis);
img = r.read(0);
} catch (IOException e) {}
}
} finally {
iis.close();
}
return img;
Java advance image io also solve the problem, but its hard to maintain to install on all plateform.

How to read big bufferedimage

I am reading a 100 MB picture into my app. It works fine inside Eclipse, but not when I export project to a JAR. Then, I get "Can't read input file!"
Since I need to edit it, I used BufferedImage.
private String str = "images/1.png";
BufferedImage imageMap;
//in constructor
imageMap = ImageIO.read(new File(str));
I have tried this, but the project image does not load inside Eclipse:
imageMap = ImageIO.read(this.getClass().getClassLoader().getResource(str));
Check you working directory if the image is loaded from the file system. Then you see if your relative path "images/1.png" is valid. Or you directly check the path of your png
System.out.println(new File("."));
File f = new File("images/1.png");
System.out.println(f.getAbsolutePath());

how to read image from project folder in java?

I am developing web method for webservice in java. In this web method I have to read image from my images folder which resides in my webservice project folder. I am using the code as follows.
#WebMethod(operationName = "getAddvertisementImage")
public Vector getAddvertisementImage()
{
Image image = null;
Vector imageList = new Vector();
try
{
File file = new File("E:/SBTS/SBTSWebservice/web/adv_btm.jpg");
image = ImageIO.read(file);
imageList.add(image);
}
catch (IOException e)
{
e.printStackTrace();
}
return imageList;
}
I am unable to read image from images folder.I am getting error image file "input file can't read" at image = ImageIO.read(file); how to resolve this issue ? Is there any mistake in my code or is there any other way to read image ? if there is any mistake in my code then can you proide me the code or link through which i can resolve the above issue.
Is the E:\ drive mapped on your web server? The Java compiler has no idea that you might access files outside of its scope and how it could tell your web server to map a network drive or a local hard disk which is attached to your development computer.
The solution is to put the image file into the same directory as the Java source file and then use
InputStream in = getClass().getResourceAsStream("adv_btm.jpg");
Check that your IDE (or whatever you use to build your application) does copy the image file in the same directory where it creates the .class file. Then it should work.

Categories

Resources