package com.juick.service; import com.juick.Attachment; import com.juick.Message; import com.juick.Photo; import com.juick.server.util.ImageUtils; import org.springframework.util.StringUtils; import java.io.File; import java.nio.file.Paths; public class ImagesServiceImpl implements ImagesService { @Override public void setAttachmentMetadata(String imgDir, String baseUrl, Message msg) throws Exception { if (!StringUtils.isEmpty(msg.getAttachmentType())) { Photo photo = new Photo(); if (msg.getRid()> 0) { photo.setSmall(String.format("%sphotos-512/%d-%d.%s", baseUrl, msg.getMid(), msg.getRid(), msg.getAttachmentType())); photo.setMedium(String.format("%sphotos-1024/%d-%d.%s", baseUrl, msg.getMid(), msg.getRid(), msg.getAttachmentType())); photo.setThumbnail(String.format("%sps/%d-%d.%s", baseUrl, msg.getMid(), msg.getRid(), msg.getAttachmentType())); } else { photo.setSmall(String.format("%sphotos-512/%d.%s", baseUrl, msg.getMid(), msg.getAttachmentType())); photo.setMedium(String.format("%sphotos-1024/%d.%s", baseUrl, msg.getMid(), msg.getAttachmentType())); photo.setThumbnail(String.format("%sps/%d.%s", baseUrl, msg.getMid(), msg.getAttachmentType())); } msg.setPhoto(photo); String imageName = String.format("%s.%s", msg.getMid(), msg.getAttachmentType()); if (msg.getRid() > 0) { imageName = String.format("%s-%s.%s", msg.getMid(), msg.getRid(), msg.getAttachmentType()); } File fullImage = Paths.get(imgDir, "p", imageName).toFile(); File mediumImage = Paths.get(imgDir, "photos-1024", imageName).toFile(); File smallImage = Paths.get(imgDir, "photos-512", imageName).toFile(); File thumbnailImage = Paths.get(imgDir, "ps", imageName).toFile(); StringBuilder builder = new StringBuilder(); builder.append(baseUrl); builder.append(msg.getAttachmentType().equals("mp4") ? "video" : "p"); builder.append("/").append(msg.getMid()); if (msg.getRid() > 0) { builder.append("-").append(msg.getRid()); } builder.append(".").append(msg.getAttachmentType()); String originalUrl = builder.toString(); Attachment original = new Attachment(); original.setUrl(originalUrl); original.setHeight(ImageUtils.getImageHeight(fullImage)); original.setWidth(ImageUtils.getImageWidth(fullImage)); Attachment medium = new Attachment(); medium.setUrl(photo.getMedium()); medium.setWidth(ImageUtils.getImageWidth(mediumImage)); medium.setHeight(ImageUtils.getImageHeight(mediumImage)); original.setMedium(medium); Attachment small = new Attachment(); small.setUrl(photo.getSmall()); small.setWidth(ImageUtils.getImageWidth(smallImage)); small.setHeight(ImageUtils.getImageHeight(smallImage)); original.setSmall(small); Attachment thumb = new Attachment(); thumb.setUrl(photo.getMedium()); thumb.setWidth(ImageUtils.getImageWidth(thumbnailImage)); thumb.setHeight(ImageUtils.getImageHeight(thumbnailImage)); original.setThumbnail(thumb); msg.setAttachment(original); } } }