Skip to content

Commit e453c92

Browse files
authored
Merge pull request #362 from nramc/361-bug-logo-image-file-failed-load
fix: failed to load qr logo image fixed with replacing spring Resource with classpath resource
2 parents 1ce6d61 + f9818c3 commit e453c92

File tree

3 files changed

+8
-13
lines changed

3 files changed

+8
-13
lines changed

src/main/java/com/github/nramc/dev/journey/api/config/TotpConfig.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,9 @@
66
import com.github.nramc.dev.journey.api.core.usecase.codes.totp.TotpProperties;
77
import com.github.nramc.dev.journey.api.core.usecase.codes.totp.TotpSecretGenerator;
88
import com.github.nramc.dev.journey.api.core.usecase.codes.totp.TotpTimeStepWindowProvider;
9-
import org.springframework.beans.factory.annotation.Value;
109
import org.springframework.boot.context.properties.EnableConfigurationProperties;
1110
import org.springframework.context.annotation.Bean;
1211
import org.springframework.context.annotation.Configuration;
13-
import org.springframework.core.io.Resource;
1412

1513
/**
1614
* TOTP Implementation based on <a href="https://datatracker.ietf.org/doc/html/rfc6238">RFC-6238</a> guidelines
@@ -43,8 +41,8 @@ public TotpCodeVerifier totpCodeVerifier(
4341
}
4442

4543
@Bean
46-
public QRCodeGenerator qrCodeGenerator(@Value("classpath:assets/qr-code-logo-60x60.png") Resource logoFile) {
47-
return new QRCodeGenerator(logoFile);
44+
public QRCodeGenerator qrCodeGenerator() {
45+
return new QRCodeGenerator();
4846
}
4947

5048

src/main/java/com/github/nramc/dev/journey/api/core/usecase/codes/totp/QRCodeGenerator.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,17 @@
88
import com.google.zxing.common.BitMatrix;
99
import com.google.zxing.qrcode.QRCodeWriter;
1010
import lombok.RequiredArgsConstructor;
11-
import org.springframework.core.io.Resource;
11+
import org.springframework.core.io.ClassPathResource;
1212

1313
import javax.imageio.ImageIO;
1414
import java.awt.*;
1515
import java.awt.image.BufferedImage;
1616
import java.io.ByteArrayOutputStream;
1717
import java.io.IOException;
18+
import java.io.InputStream;
1819

1920
@RequiredArgsConstructor
2021
public class QRCodeGenerator {
21-
private final Resource logoFile;
2222

2323
public byte[] generate(QRCodeData qrCodeData) {
2424
try {
@@ -34,15 +34,15 @@ public byte[] generate(QRCodeData qrCodeData) {
3434
}
3535

3636
public byte[] generateWithLogo(QRCodeData qrCodeData) {
37-
try {
37+
try (InputStream inputStreamLogo = new ClassPathResource("assets/qr-code-logo-60x60.png").getInputStream()) {
3838
// Generate QR image
3939
QRCodeWriter writer = new QRCodeWriter();
4040
BitMatrix bitMatrix = writer.encode(qrCodeData.getUri(), BarcodeFormat.QR_CODE, qrCodeData.width(), qrCodeData.height());
4141
MatrixToImageConfig imageConfig = new MatrixToImageConfig(MatrixToImageConfig.BLACK, MatrixToImageConfig.WHITE);
4242
BufferedImage qrImage = MatrixToImageWriter.toBufferedImage(bitMatrix, imageConfig);
4343

4444
// Getting logo image
45-
BufferedImage logoImage = ImageIO.read(logoFile.getFile());
45+
BufferedImage logoImage = ImageIO.read(inputStreamLogo);
4646
int finalImageHeight = qrImage.getHeight() - logoImage.getHeight();
4747
int finalImageWidth = qrImage.getWidth() - logoImage.getWidth();
4848

src/test/java/com/github/nramc/dev/journey/api/core/usecase/codes/totp/QRCodeGeneratorTest.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package com.github.nramc.dev.journey.api.core.usecase.codes.totp;
22

33
import org.junit.jupiter.api.Test;
4-
import org.springframework.core.io.ClassPathResource;
5-
import org.springframework.core.io.Resource;
64

75
import java.io.IOException;
86
import java.nio.file.Files;
@@ -33,18 +31,17 @@ class QRCodeGeneratorTest {
3331
.height(TOTP_PROPERTIES.qrHeight())
3432
.secret("EX47GINFPBK5GNLYLILGD2H6ZLGJNNWB")
3533
.build();
36-
private final Resource logoFile = new ClassPathResource("assets/qr-code-logo-60x60.png");
3734

3835
@Test
3936
void something() throws IOException {
40-
QRCodeGenerator generator = new QRCodeGenerator(logoFile);
37+
QRCodeGenerator generator = new QRCodeGenerator();
4138
Path tempFile = Files.write(Files.createTempFile("qr_test", ".png"), generator.generate(QR_DATA));
4239
assertThat(tempFile).isNotNull();
4340
}
4441

4542
@Test
4643
void qRCodeGenerator() throws IOException {
47-
QRCodeGenerator generator = new QRCodeGenerator(logoFile);
44+
QRCodeGenerator generator = new QRCodeGenerator();
4845
Path tempFile = Files.write(Files.createTempFile("qr_test", ".png"), generator.generateWithLogo(QR_DATA));
4946
assertThat(tempFile).isNotNull();
5047
}

0 commit comments

Comments
 (0)