code: public Object handle(Stru _cmd, HttpRequest request) throws Exception {
  		try {
  			Check.illegalargument.assertEquals(GET, request.getRequestLine().getMethod());
  			Obj cmd = _cmd.asObj();
  			@Nullable String path = cmd.getStr(CMD_PATH);
  			String nameAndTx = cmd.getStrictStr(CMD_NAME);
  			String ext = cmd.getStrictStr(CMD_EXT);
  			int dotPos = nameAndTx.indexOf('.');
  			String name = dotPos > 0 ? nameAndTx.substring(0, dotPos) : nameAndTx;
  			String tx = dotPos > 0 ? nameAndTx.substring(dotPos + 1) : null;
  			if (path != null) name = Uris.URIS.pathJoin(path, name);
  			
  			Tuple2<String, byte[]> foundImage = imageStore.get(name, ext);
  			if (foundImage == null) {
  				return HTTP.createBasicResponse(
  					SC_NOT_FOUND,
  					Obj.make("reason", statusToReason.get(SC_NOT_FOUND)).toString(),
  					CT_APPLICATION_JSON_CS_UTF8);
  			} else {
  				ByteArrayEntity res;
  				byte[] image = foundImage.get1();
  				if (tx == null && fmtEquals(ext, foundImage.get0())) {
  					res = new ByteArrayEntity(image);
  				} else {
  					ByteArrayOutputStream baos = new ByteArrayOutputStream();
  					Tuple2<BufferedImage, String> biAndFmt = imageSizeFilter.readImageAndFormat(new ByteArrayInputStream(image));
  					BufferedImage src = biAndFmt.get0();
  					imageSizeFilter.resize(src, baos, ext, getWidthAndHeight(src.getWidth(), src.getHeight(), tx));
  					res = new ByteArrayEntity(baos.toByteArray());
  				}
  				res.setContentType(fmt2contentType(ext));
  				return res;
  			}
  		} catch (Exception e) {
  			throw new Http500Exception(e);
  		}
  	}
docs: (path/)name.ext | (path/)name.xH.ext | (path/)name.Wx.ext | (path/)name.WxH.ext