<%@ page contentType="text/html; charset=UTF-8"%> <%@ page trimDirectiveWhitespaces="true" %> <%@ page import="java.io.File"%> <%@page import="java.io.FileFilter"%> <%@page import="java.io.OutputStream"%> <%@page import="java.net.URL"%> <%@page import="java.awt.image.BufferedImage"%> <%@page import="java.awt.Graphics2D"%> <%@page import="javax.imageio.ImageIO"%> <%@page import="javax.imageio.IIOImage"%> <%@page import="javax.imageio.ImageWriter"%> <%@page import="javax.imageio.ImageWriteParam"%> <%@page import="javax.imageio.stream.MemoryCacheImageOutputStream"%> <%@page import="java.util.Arrays"%> <%@page import="java.util.Comparator"%> <%@page import="java.util.Enumeration"%> <%@page import="java.util.Vector"%> <%@page import="java.util.Iterator"%> <% int xStart = 0; int yStart = 0; int zoom = 6; Iterator iw = ImageIO.getImageWritersByFormatName("jpeg"); ImageWriter writer = (ImageWriter)iw.next(); ImageWriteParam iwp = writer.getDefaultWriteParam(); iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); float q = 95; try { q = Integer.parseInt(request.getParameter("q")); } catch (Exception e) {} iwp.setCompressionQuality(q/100f); String tilePath=request.getParameter("tilepath"); if (tilePath == null) tilePath = "http://gallica.bnf.fr/proxy?method=R"; String ark=request.getParameter("ark"); if (ark == null) ark = "btv1b8470433r"; String folio=request.getParameter("folio"); if (folio == null) folio = "f15"; try { zoom = Integer.parseInt(request.getParameter("z")); } catch (Exception e){} if (tilePath == null) return; try { BufferedImage fullImage = null; Graphics2D g = null; int imageWidth = 4220; int imageHeight = 5300; fullImage = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_RGB); g = fullImage.createGraphics(); int x = 0; int y = 0; for (int i = 0; i < 5; ++i) { BufferedImage tile = null; String imageURL = tilePath + "&ark="+ark+"."+folio+"&l="+Integer.toString(zoom) + "&r="+ Integer.toString(y) + ",0,1060,4220"; tile = ImageIO.read(new URL(imageURL)); g.drawImage(tile, x, y, tile.getWidth(), tile.getHeight(), null); y += tile.getHeight(); } if (g != null) g.dispose(); response.setContentType("image/jpeg"); OutputStream os = response.getOutputStream(); writer.setOutput(new MemoryCacheImageOutputStream(os)); IIOImage image = new IIOImage(fullImage, null, null); writer.write(null, image, iwp); writer.dispose(); os.close(); } catch (Exception e) {e.printStackTrace();} %>