Bilder mit Neon 2 verwenden
ulrich
2024-02-25 f7b9adf186cdda03ef787dd8064066e790710a69
Matcher um Pattern-Attribut erweitert und in Filter verlagert; Berichtigungen am ImageWorker
2 files modified
91 ■■■■ changed files
src/de/uhilger/neon/image/ImageFilter.java 30 ●●●●● patch | view | raw | blame | history
src/de/uhilger/neon/image/ImageWorker.java 61 ●●●● patch | view | raw | blame | history
src/de/uhilger/neon/image/ImageFilter.java
@@ -60,18 +60,26 @@
  
  @Override
  public void doFilter(HttpExchange exchange, Chain chain) throws IOException {
    /*
      Regex fuer Bilder
      .+\.jpg|.+\.jpeg|.+\.png
      (Testen z.B. auf https://regexr.com/)
    */
    String pattern = (String) exchange.getHttpContext().getAttributes()
            .getOrDefault("imageFilterPattern", ".+\\.jpg|.+\\.jpeg|.+\\.png");
    String uriStr = exchange.getRequestURI().toString();
    //String fName = new HttpHelper().getFileName(exchange);
    String fName = exchange
            .getRequestURI()
            .getPath()
            .substring(exchange
                    .getHttpContext()
                    .getPath()
                    .length());
    ImageWorker worker = new ImageWorker();
    worker.createImages(exchange.getHttpContext().getAttributes().get(FileServer.ATTR_FILE_BASE).toString(),
            fName, uriStr);
    if(uriStr.matches(pattern)) {
      String fileBase = (String) exchange.getHttpContext().getAttributes()
              .get(FileServer.ATTR_FILE_BASE);
      String fileName = exchange
              .getRequestURI()
              .getPath()
              .substring(exchange
                      .getHttpContext()
                      .getPath()
                      .length());
      new ImageWorker().createImages(fileBase, fileName, uriStr);
    }
    chain.doFilter(exchange);
  }
src/de/uhilger/neon/image/ImageWorker.java
@@ -42,40 +42,40 @@
  /**
   * Diese String-Konstanten noetigenfalls in eine Konfigurationsdatei auslagern
   */
  public static final String TN = "_tn"; // 120
  public static final String KL = "_kl"; // 240
  public static final String SM = "_sm"; // 500
  public static final String MT = "_mt"; // 700
  public static final String GR = "_gr"; // 1200
  private final String TN = "_tn"; // 120
  private final String KL = "_kl"; // 240
  private final String SM = "_sm"; // 500
  private final String MT = "_mt"; // 700
  private final String GR = "_gr"; // 1200
  public static final String B64 = "_b64"; // Base64-Encoded
  private final String B64 = "_b64"; // Base64-Encoded
  public static final String JPG = ".jpg";
  public static final String JPEG = ".jpeg";
  public static final String PNG = ".png";
  //public static final String JPG = ".jpg";
  //public static final String JPEG = ".jpeg";
  //public static final String PNG = ".png";
  
  public void createImages(String baseDir, String  fName, String uriStr) throws IOException {
    if(uriStr.endsWith(ImageWorker.JPG) || uriStr.endsWith(ImageWorker.JPEG) || uriStr.endsWith(ImageWorker.PNG)) {
    //if(uriStr.endsWith(ImageWorker.JPG) || uriStr.endsWith(ImageWorker.JPEG) || uriStr.endsWith(ImageWorker.PNG)) {
      File dir = new File(baseDir);
      File imgfile = new File(dir, fName);    
      ImageWorker actor = new ImageWorker();
      if(uriStr.contains(ImageWorker.TN)) {
        actor.createImage(dir, fName, ImageWorker.TN, 120, imgfile);
      } else if(uriStr.contains(ImageWorker.KL)) {
        actor.createImage(dir, fName, ImageWorker.KL, 240, imgfile);
      } else if(uriStr.contains(ImageWorker.SM)) {
        actor.createImage(dir, fName, ImageWorker.SM, 500, imgfile);
      } else if(uriStr.contains(ImageWorker.MT)) {
        actor.createImage(dir, fName, ImageWorker.MT, 700, imgfile);
      } else if(uriStr.contains(ImageWorker.GR)) {
        actor.createImage(dir, fName, ImageWorker.GR, 1200, imgfile);
      } else if(uriStr.contains(ImageWorker.B64)) {
      //ImageWorker actor = new ImageWorker();
      if(uriStr.contains(TN)) {
        createImage(dir, fName, TN, 120, imgfile);
      } else if(uriStr.contains(KL)) {
        createImage(dir, fName, KL, 240, imgfile);
      } else if(uriStr.contains(SM)) {
        createImage(dir, fName, SM, 500, imgfile);
      } else if(uriStr.contains(MT)) {
        createImage(dir, fName, MT, 700, imgfile);
      } else if(uriStr.contains(GR)) {
        createImage(dir, fName, GR, 1200, imgfile);
      } else if(uriStr.contains(B64)) {
        File b64File = imgfile;
        String fromName = fName.replace(ImageWorker.B64, "");
        String fromName = fName.replace(B64, "");
        File fromfile = new File(dir, fromName);        
        actor.b64Image(fromfile, b64File);
        b64Image(fromfile, b64File);
      }     
    }
    //}
  }
  /**
@@ -138,11 +138,12 @@
  public void setImgSrc(Datei datei, String ext, File b64File) throws IOException {
    StringBuilder sb = new StringBuilder();
    sb.append("data:image/");
    if(ext.equalsIgnoreCase(ImageWorker.JPEG) || ext.equalsIgnoreCase(ImageWorker.JPG)) {
      sb.append("jpeg");
    } else if(ext.equalsIgnoreCase(ImageWorker.PNG)) {
      sb.append("png");
    }
    //if(ext.equalsIgnoreCase(ImageWorker.JPEG) || ext.equalsIgnoreCase(ImageWorker.JPG)) {
    //  sb.append("jpeg");
    //} else if(ext.equalsIgnoreCase(ImageWorker.PNG)) {
    //  sb.append("png");
    //}
    sb.append(ext.toLowerCase());
    sb.append(";base64,");
    byte[] buf = new byte[4096];
    InputStream is = new FileInputStream(b64File);