Почему я не могу отображать base64 с моим конвертеромJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему я не могу отображать base64 с моим конвертером

Сообщение Anonymous »

Я занимаюсь чтением паспорта NFC, а результат DG1 - SucdD, но DG2 Я хочу получить паспорт профиля изображения, и это мой код, который я конвертирую в BASE64, но программа не отображает изображение < /p>

Код: Выделить всё

package com.example.demo;

import com.google.gson.Gson;
import net.sf.scuba.smartcards.*;
import net.sf.scuba.smartcards.CommandAPDU;
import net.sf.scuba.smartcards.ResponseAPDU;
import org.jmrtd.BACKey;
import org.jmrtd.BACKeySpec;
import org.jmrtd.PassportService;
import org.jmrtd.lds.icao.*;
import org.jmrtd.lds.iso19794.FaceImageInfo;
import org.jmrtd.lds.iso19794.FaceInfo;
import org.json.JSONObject;
import org.springframework.web.bind.annotation.*;

import javax.imageio.ImageIO;
import javax.smartcardio.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.*;
import java.util.List;
import javax.imageio.stream.MemoryCacheImageInputStream;

@RestController
@CrossOrigin(origins = "*")
public class Api {
private static final Gson gson = new Gson();

@PostMapping("/readpassport") // ✅ Read Passport Data
public String readPassport(@RequestBody Map requestData) {
try {
String passportNo = requestData.get("documentNo");
String expiryDate = requestData.get("expiryDate");
String birthDate = requestData.get("birthDate");

if (passportNo == null || expiryDate == null || birthDate == null) {
return gson.toJson(Map.of("error", "Missing parameters"));
}

BACKeySpec bacKey = new BACKey(passportNo, birthDate, expiryDate);
Map passportData = readPassportData(bacKey);
return gson.toJson(passportData);

} catch (Exception e) {
return gson.toJson(Map.of("error", "Failed to read passport", "details", e.getMessage()));
}
}

// 📌 Convert JP2 to JPEG and Base64
private static String convertJP2ToBase64(byte[] jp2Bytes) {
try {
ByteArrayInputStream bais = new ByteArrayInputStream(jp2Bytes);
BufferedImage image = ImageIO.read(new MemoryCacheImageInputStream(bais));

if (image == null) {
throw new IOException("❌ Failed to decode JP2 image.");
}

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(image, "jpg", baos); // Convert to JPEG
return Base64.getEncoder().encodeToString(baos.toByteArray());

} catch (IOException e) {
System.err.println("❌ JP2 conversion failed: " + e.getMessage());
return "";
}
}

// 📌 Read Passport Data from ACS Smart Card Reader
private Map readPassportData(BACKeySpec bacKey) {
Map passportData = new HashMap();
try {
CardService cardService = connectACSReader();
cardService.open();

PassportService service = new PassportService(cardService, PassportService.NORMAL_MAX_TRANCEIVE_LENGTH,
PassportService.DEFAULT_MAX_BLOCKSIZE, true, false);
service.open();
service.sendSelectApplet(false);
service.doBAC(bacKey);

// 📌 Read MRZ Info (Name, Surname, DOB, etc.)
CardFileInputStream dg1In = service.getInputStream(PassportService.EF_DG1);
DG1File dg1File = new DG1File(dg1In);
MRZInfo mrzInfo = dg1File.getMRZInfo();

passportData.put("Name", mrzInfo.getSecondaryIdentifier().replace("

Подробнее здесь: [url]https://stackoverflow.com/questions/79401982/why-i-cant-display-base64-with-my-converter[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»