return stream.createInputStream();
@Test public void testCreateInputStream() throws IOException { FastByteArrayOutputStream out = makeObject(); String hello = "Hello World"; out.write(hello.getBytes("UTF-8")); InputStream in = out.createInputStream(); byte[] read = FileUtil.read(in); assertEquals(hello, new String(read, "UTF-8")); } }
@Test public void testReadWithNonUniformResize() throws IOException { Dimension size = new Dimension(150, 150); // Custom setup HttpServletRequest request = mock(HttpServletRequest.class); when(request.getAttribute(ImageServletResponse.ATTRIB_SIZE)).thenReturn(size); when(request.getAttribute(ImageServletResponse.ATTRIB_SIZE_UNIFORM)).thenReturn(false); when(request.getContextPath()).thenReturn("/ape"); when(request.getRequestURI()).thenReturn("/ape/" + IMAGE_NAME_PNG); FastByteArrayOutputStream out = new FastByteArrayOutputStream(STREAM_DEFAULT_SIZE); HttpServletResponse response = mock(HttpServletResponse.class); when(response.getOutputStream()).thenReturn(new OutputStreamAdapter(out)); ImageServletResponseImpl imageResponse = new ImageServletResponseImpl(request, response, context); fakeResponse(request, imageResponse); // Make sure image is correctly loaded BufferedImage image = imageResponse.getImage(); assertNotNull(image); assertEquals(size.width, image.getWidth()); assertEquals(size.height, image.getHeight()); // Flush image to wrapped response imageResponse.flush(); assertTrue("Content has no data", out.size() > 0); // Test that image data is still readable BufferedImage outImage = ImageIO.read(out.createInputStream()); assertNotNull(outImage); assertEquals(image.getWidth(), outImage.getWidth()); assertEquals(image.getHeight(), outImage.getHeight()); verify(response).getOutputStream(); verify(response).setContentType(CONTENT_TYPE_PNG); }
@Test public void testReadWithNonSquareSourceRegion() throws IOException { Rectangle sourceRegion = new Rectangle(100, 100, 100, 80); // Custom setup HttpServletRequest request = mock(HttpServletRequest.class); when(request.getAttribute(ImageServletResponse.ATTRIB_AOI)).thenReturn(sourceRegion); when(request.getContextPath()).thenReturn("/ape"); when(request.getRequestURI()).thenReturn("/ape/" + IMAGE_NAME_PNG); FastByteArrayOutputStream out = new FastByteArrayOutputStream(STREAM_DEFAULT_SIZE); HttpServletResponse response = mock(HttpServletResponse.class); when(response.getOutputStream()).thenReturn(new OutputStreamAdapter(out)); ImageServletResponseImpl imageResponse = new ImageServletResponseImpl(request, response, context); fakeResponse(request, imageResponse); // Make sure image is correctly loaded BufferedImage image = imageResponse.getImage(); assertNotNull(image); assertEquals(sourceRegion.width, image.getWidth()); assertEquals(sourceRegion.height, image.getHeight()); // Flush image to wrapped response imageResponse.flush(); assertTrue("Content has no data", out.size() > 0); // Test that image data is still readable BufferedImage outImage = ImageIO.read(out.createInputStream()); assertNotNull(outImage); assertEquals(image.getWidth(), outImage.getWidth()); assertEquals(image.getHeight(), outImage.getHeight()); verify(response).getOutputStream(); verify(response).setContentType(CONTENT_TYPE_PNG); }
BufferedImage outImage = ImageIO.read(out.createInputStream()); assertNotNull(outImage); assertEquals(image.getWidth(), outImage.getWidth());
BufferedImage outImage = ImageIO.read(out.createInputStream()); assertNotNull(outImage); assertEquals(image.getWidth(), outImage.getWidth());
BufferedImage outImage = ImageIO.read(out.createInputStream()); assertNotNull(outImage); assertEquals(image.getWidth(), outImage.getWidth());
BufferedImage outImage = ImageIO.read(out.createInputStream()); assertNotNull(outImage); assertEquals(image.getWidth(), outImage.getWidth());
BufferedImage outImage = ImageIO.read(out.createInputStream()); assertNotNull(outImage); assertEquals(image.getWidth(), outImage.getWidth());
@Test public void testReadWithSourceRegion() throws IOException { Rectangle sourceRegion = new Rectangle(100, 100, 100, 100); // Custom setup HttpServletRequest request = mock(HttpServletRequest.class); when(request.getAttribute(ImageServletResponse.ATTRIB_AOI)).thenReturn(sourceRegion); when(request.getContextPath()).thenReturn("/ape"); when(request.getRequestURI()).thenReturn("/ape/" + IMAGE_NAME_PNG); FastByteArrayOutputStream out = new FastByteArrayOutputStream(STREAM_DEFAULT_SIZE); HttpServletResponse response = mock(HttpServletResponse.class); when(response.getOutputStream()).thenReturn(new OutputStreamAdapter(out)); ImageServletResponseImpl imageResponse = new ImageServletResponseImpl(request, response, context); fakeResponse(request, imageResponse); // Make sure image is correctly loaded BufferedImage image = imageResponse.getImage(); assertNotNull(image); assertEquals(sourceRegion.width, image.getWidth()); assertEquals(sourceRegion.height, image.getHeight()); // Flush image to wrapped response imageResponse.flush(); assertTrue("Content has no data", out.size() > 0); // Test that image data is still readable BufferedImage outImage = ImageIO.read(out.createInputStream()); assertNotNull(outImage); assertEquals(image.getWidth(), outImage.getWidth()); assertEquals(image.getHeight(), outImage.getHeight()); verify(response).getOutputStream(); verify(response).setContentType(CONTENT_TYPE_PNG); }
BufferedImage outImage = ImageIO.read(out.createInputStream()); assertNotNull(outImage); assertEquals(image.getWidth(), outImage.getWidth());
ByteArrayInputStream inputStream = out.createInputStream(); assertEquals(0x89, inputStream.read()); assertEquals('P', inputStream.read()); BufferedImage outImage = ImageIO.read(out.createInputStream()); assertNotNull(outImage); assertEquals(size.width, outImage.getWidth());
BufferedImage outImage = ImageIO.read(out.createInputStream()); assertNotNull(outImage); assertEquals(image.getWidth(), outImage.getWidth());
@Test public void testBasicResponse() throws IOException { FastByteArrayOutputStream out = new FastByteArrayOutputStream(STREAM_DEFAULT_SIZE); HttpServletResponse response = mock(HttpServletResponse.class); when(response.getOutputStream()).thenReturn(new OutputStreamAdapter(out)); ImageServletResponseImpl imageResponse = new ImageServletResponseImpl(request, response, context); fakeResponse(request, imageResponse); // Make sure image is correctly loaded BufferedImage image = imageResponse.getImage(); assertNotNull(image); assertEquals(IMAGE_DIMENSION_PNG.width, image.getWidth()); assertEquals(IMAGE_DIMENSION_PNG.height, image.getHeight()); // Flush image to wrapped response imageResponse.flush(); assertTrue("Content has no data", out.size() > 0); // Test that image data is still readable BufferedImage outImage = ImageIO.read(out.createInputStream()); assertNotNull(outImage); assertEquals(image.getWidth(), outImage.getWidth()); assertEquals(image.getHeight(), outImage.getHeight()); verify(response).setContentType(CONTENT_TYPE_PNG); verify(response).getOutputStream(); }
@Test public void testTranscodeResponseIndexColorModelGIFToJPEG() throws IOException { // Custom setup HttpServletRequest request = mock(HttpServletRequest.class); when(request.getContextPath()).thenReturn("/ape"); when(request.getRequestURI()).thenReturn("/ape/" + IMAGE_NAME_GIF); FastByteArrayOutputStream out = new FastByteArrayOutputStream(STREAM_DEFAULT_SIZE); HttpServletResponse response = mock(HttpServletResponse.class); when(response.getOutputStream()).thenReturn(new OutputStreamAdapter(out)); ImageServletResponseImpl imageResponse = new ImageServletResponseImpl(request, response, context); fakeResponse(request, imageResponse); // Force transcode to JPEG imageResponse.setOutputContentType("image/jpeg"); // Flush image to wrapped response imageResponse.flush(); assertTrue("Content has no data", out.size() > 0); // Assert JPEG ByteArrayInputStream stream = out.createInputStream(); assertEquals(0xFF, stream.read()); assertEquals(0xD8, stream.read()); assertEquals(0xFF, stream.read()); // Test that image data is still readable BufferedImage outImage = ImageIO.read(out.createInputStream()); assertNotNull(outImage); assertEquals(IMAGE_DIMENSION_GIF.width, outImage.getWidth()); assertEquals(IMAGE_DIMENSION_GIF.height, outImage.getHeight()); BufferedImage image = flatten(ImageIO.read(context.getResource("/" + IMAGE_NAME_GIF)), Color.WHITE); assertSimilarImage(image, outImage, 96f); }
BufferedImage outImage = ImageIO.read(out.createInputStream()); assertNotNull(outImage); assertEquals(IMAGE_DIMENSION_PNG.width, outImage.getWidth());
ByteArrayInputStream stream = out.createInputStream(); assertEquals('G', stream.read()); assertEquals('I', stream.read()); BufferedImage outImage = ImageIO.read(out.createInputStream()); assertNotNull(outImage); assertEquals(IMAGE_DIMENSION_PNG.width, outImage.getWidth());
BufferedImage outImage = ImageIO.read(out.createInputStream()); assertNotNull(outImage); assertEquals(image.getWidth(), outImage.getWidth());
@Test public void testReplaceResponse() throws IOException { FastByteArrayOutputStream out = new FastByteArrayOutputStream(STREAM_DEFAULT_SIZE); HttpServletResponse response = mock(HttpServletResponse.class); when(response.getOutputStream()).thenReturn(new OutputStreamAdapter(out)); ImageServletResponseImpl imageResponse = new ImageServletResponseImpl(request, response, context); fakeResponse(request, imageResponse); // Make sure image is correctly loaded BufferedImage image = imageResponse.getImage(); assertNotNull(image); // Do something with image // NOTE: BMP writer can't write ARGB so this image is converted (same goes for JPEG) // TODO: Make conversion testing more explicit image = new BufferedImage(32, 32, BufferedImage.TYPE_INT_ARGB); imageResponse.setImage(image); imageResponse.setOutputContentType("image/bmp"); // Flush image to wrapped response imageResponse.flush(); assertTrue("Content has no data", out.size() > 0); // Test that image data is still readable BufferedImage outImage = ImageIO.read(out.createInputStream()); assertNotNull(outImage); assertEquals(image.getWidth(), outImage.getWidth()); assertEquals(image.getHeight(), outImage.getHeight()); assertSimilarImage(image, outImage, 0); verify(response).getOutputStream(); verify(response).setContentType(CONTENT_TYPE_BMP); }
ByteArrayInputStream input = out.createInputStream(); assertEquals(0xFF, input.read()); assertEquals(0xD8, input.read()); BufferedImage outImage = ImageIO.read(out.createInputStream()); assertNotNull(outImage); assertEquals(IMAGE_DIMENSION_PNG.width, outImage.getWidth());