Невозможно сохранить три размера изображения для нескольких изображений в файловой системе весной mvc - PullRequest
0 голосов
/ 29 января 2020

Я пытаюсь сохранить фактическое, стандартное и уменьшенное изображение (все разных размеров) в моей файловой системе. Я могу сделать это с одним изображением с этим кодом:

Set<ProductImage> productImages = new HashSet<>();
    for (MultipartFile multipartFile : images) {
        ProductImage productImage = new ProductImage();
        productImage.setSize(multipartFile.getSize());
        productImage.setExtension(multipartFile.getContentType());
        productImage.setActualImageName(new Date().getTime() + multipartFile.getOriginalFilename());
        productImage.setStandardImageName("stand_"+ new Date().getTime() +multipartFile.getOriginalFilename());
        productImage.setNameAtFilestore(slg.slugify(productImage.getActualImageName()));
        productImage.setThumbnailImageName("thumb_"+ new Date().getTime() + multipartFile.getOriginalFilename());
        productImage.setProduct(product);
        productImages.add(productImage);
        File imageFile = new File(directory + "/" + productImage.getActualImageName());
        imageFile.setReadable(true, false);

        imageFile.createNewFile();
        try {
            multipartFile.transferTo(imageFile);

            BufferedImage originalImage= ImageIO.read(imageFile);
            int type = originalImage.getType() == 0? BufferedImage.TYPE_INT_ARGB : originalImage.getType();
            BufferedImage resizedImage = new BufferedImage(500, 500, type);
            Graphics2D g = resizedImage.createGraphics();
            g.drawImage(originalImage, 0, 0, 500, 500, null);
            g.dispose();
            ImageIO.write(resizedImage, "jpg", new File(directory + "/" + productImage.getStandardImageName()));

        } catch (IOException e) {
            e.printStackTrace();
        }

        File thumbFile = new File(directory + "/" + productImage.getThumbnailImageName());
        thumbFile.setReadable(true, false);
        thumbFile.createNewFile();

        try {
            Thumbnails.of(directory + "/" + productImage.getActualImageName())
                    .size(200, 200).keepAspectRatio(false)
                    .toFile(thumbFile);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    productImages.addAll(product.getProductImages());
    product.setProductImages(productImages);

Проблема в том, что когда я загружаю, например, два изображения, сохраняются три размера одного изображения, но только фактические и миниатюры для другого. Я новичок в этом, поэтому не мог найти способ обойти это. Я также использую спящий режим.

...