Skip to content

Commit 3833df5

Browse files
committed
⚡ MarkSphere v1.0.8
이미지 저장 시 압축 기능 누락된 코드 추가
1 parent 671a148 commit 3833df5

1 file changed

Lines changed: 24 additions & 14 deletions

File tree

src/main/java/com/sonkim/bookmarking/common/service/ImageProcessingService.java

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.sonkim.bookmarking.common.service;
22

3+
import com.sksamuel.scrimage.ImmutableImage;
4+
import com.sksamuel.scrimage.webp.WebpWriter;
35
import com.sonkim.bookmarking.common.s3.service.S3Service;
46
import com.sonkim.bookmarking.domain.bookmark.entity.Bookmark;
57
import com.sonkim.bookmarking.domain.bookmark.repository.BookmarkRepository;
@@ -12,7 +14,6 @@
1214
import org.springframework.transaction.event.TransactionPhase;
1315
import org.springframework.transaction.event.TransactionalEventListener;
1416

15-
import java.io.InputStream;
1617
import java.net.URL;
1718
import java.util.Optional;
1819

@@ -42,24 +43,33 @@ public void downloadAndUploadToS3(BookmarkCreatedEvent event) {
4243
}
4344

4445
try {
45-
// S3에 업로드 후 파일 키 수령
46-
String fileKey;
47-
try (InputStream in = new URL(imageUrl).openStream()) {
48-
// URL에서 이미지를 byte[]로 읽어옴
49-
byte[] imageBytes = in.readAllBytes();
46+
// 이미지 다운로드 및 로딩
47+
ImmutableImage image = ImmutableImage.loader().fromUrl(new URL(imageUrl));
5048

51-
// 파일 이름 추출
52-
String fileNameWithQuery = imageUrl.substring(imageUrl.lastIndexOf('/') + 1);
53-
int queryIndex = fileNameWithQuery.indexOf('?');
54-
String originalFileName = (queryIndex != -1) ? fileNameWithQuery.substring(0, queryIndex) : fileNameWithQuery;
49+
// 리사이징
50+
if (image.width > 600) {
51+
image = image.scaleToWidth(600);
52+
}
53+
54+
// webP로 변환
55+
byte[] webpImageBytes = image.bytes(WebpWriter.DEFAULT.withQ(80));
5556

56-
// S3에 업로드하고 fileKey 반환
57-
fileKey = s3Service.uploadImageBytes(imageBytes, originalFileName, "bookmarks/");
57+
// 파일 이름 생성 및 S3 업로드
58+
String originalFileName = imageUrl.substring(imageUrl.lastIndexOf('/') + 1);
59+
int queryIndex = imageUrl.lastIndexOf('?');
60+
if (queryIndex != -1) {
61+
originalFileName = originalFileName.substring(0, queryIndex);
5862
}
5963

60-
// 해당 북마크 이미지 url 수정
61-
Optional<Bookmark> bookmarkOptional = bookmarkRepository.findById(bookmarkId);
64+
String fileNameWithoutExt = originalFileName.contains(".")
65+
? originalFileName.substring(0, originalFileName.lastIndexOf("."))
66+
: originalFileName;
67+
String webpFileName = fileNameWithoutExt + ".webp";
6268

69+
String fileKey = s3Service.uploadImageBytes(webpImageBytes, webpFileName, "bookmarks/");
70+
71+
// DB 업데이트
72+
Optional<Bookmark> bookmarkOptional = bookmarkRepository.findById(bookmarkId);
6373
if (bookmarkOptional.isPresent()) {
6474
Bookmark bookmark = bookmarkOptional.get();
6575
bookmark.updateImageKey(fileKey);

0 commit comments

Comments
 (0)