如何获取我存储在网页文件夹中的图像,以便将其读入缓冲图像?
我在网上找到了很多关于它是如何工作的解释,但它太令人困惑了! 也许有人可以帮助我在我熟悉的场景中向我解释一下?
这是我的服务器文件夹树:
我想从我的ItemStorage类中读取网页中图像的PNG图片。 这是该课程的样子:
import java.util.ArrayList;
import java.util.List;
import be.pxl.minecraft.model.Item;
import com.sun.jersey.spi.resource.Singleton;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;
@Singleton
public class ItemStorage {
private ImageStorage test;
private HashMap<String, Image> categories;
private HashMap<String, BufferedImage> images;
private List<Item> recipesList;
public ItemStorage() {
File directory = new File("/images");
if (directory.isDirectory()) { //FILE PATH NOT A DIRECTORY
BufferedImage img = null;
for (File f : directory.listFiles()) {
try {
img = ImageIO.read(f);
images.put(f.getName(), img);
} catch (IOException ex) {
Logger.getLogger(ItemStorage.class.getName()).log(Level.SEVERE, "Error loading image", ex);
}
}
}
recipesList = new ArrayList<Item>();
//BufferedImage air = getImage("air"); //TRIED DIFFERENT APPROACH, SEE getImage()
//Armor
recipesList.add(new Item(7, 2, getImage("diamond_boots"), "Boots (Diamond)",
"0,0,0,1,0,1,1,0,1", String.format("%d,%d", getImage("air"), R.drawable.diamond_ingot )));
}
public void setItems(List<Item> list) {
recipesList = list;
}
public List<Item> getItems() {
return recipesList;
}
@Path("/images")
@Produces("image/png")
public Response getImage(String imageName) { //TRYING TO HTTP TO THE IMAGE
BufferedImage img = null;
try {
File imageFile = new File(imageName + ".png");
img = ImageIO.read(imageFile);
return Response.ok(img).build();
} catch (IOException ex) {
Logger.getLogger(ItemStorage.class.getName()).log(Level.SEVERE, "Error loading image", ex);
} finally {
return Response.ok(img).build();
}
}
}
如您所见,我尝试通过HTTP和简单的IO目录调用图像。 这是在tomcat 7.0.41.0下运行的restful服务器 请合作。
答案 0 :(得分:0)
您的方法让我感到困惑的是,您从服务中访问了一个文件,该文件应该位于“根”(“/”)目录中。这不在您的申请中。
在休息服务中,没有“上下文”,就像你在servlet世界中拥有它一样。您需要使用配置选项以某种方式识别images文件夹。您还可以查看REST服务器的文档,以了解如何访问MessageContext和HTTPRequest。然后,您可以使用它们访问Web应用程序的运行时文件夹并访问图像。