私は電文ロボットを開発するためにrubenlagusによってTelegramBots Java APIを使用しています。私は首尾よく写真をボットに送ることができ、this exampleのようにテレグラムから写真を取り出すこともできます。問題は、実際にアップロードされた画像と比較してダウンロードした画像が小さく、品質も劣ることです。 Java Persistence(JPA)を使用してイメージをブロブとして保存していますか?ここに私のコードですテレグラムボットJavaライブラリダウンロード画像の品質
クライアントからのイメージを受け取るサンプルコード;
List<PhotoSize> photos = message.getPhoto();
System.out.println("Photos --> " + photos.size());
for (int i = 0; i < photos.size(); i++) {
GetFile getFileRequest = new GetFile();
getFileRequest.setFileId(photos.get(i).getFileId());
File file = getFile(getFileRequest);
// System.out.println(file.getFilePath());
downloadFilePath = filePathUrl + file.getFilePath();
System.out.println("Photo --> " + downloadFilePath);
java.io.File fileFromSystem =downloadFile(downloadFilePath);
byte[] bytes = new byte[(int) fileFromSystem.length()];
System.out.println(photo Size --> " + bytes.length);
FileInputStream fileInputStream = new FileInputStream(fileFromSystem);
fileInputStream.read(bytes);
myEntity.setPhoto(bytes);
myFacade.edit(myEntity);
ダウンロードファイルメソッド;
private java.io.File downloadFile(String fileUrl) {
java.io.File file = null;
try {
sysProps = System.getProperties();
URL url = new URL(fileUrl);
InputStream in = url.openStream();
String directoryPath = sysProps.getProperty("file.separator") + sysProps.getProperty("user.home") + sysProps.getProperty("file.separator") + "Documents" + sysProps.getProperty("file.separator") + "dev";
java.io.File directory = new java.io.File(directoryPath);
String pathToFile = directoryPath + sysProps.getProperty("file.separator") + new Random().nextInt(100) + fileUrl.substring(fileUrl.lastIndexOf("/") + 1);
if (!directory.exists()) {
directory.mkdirs();
}
file = new java.io.File(pathToFile);
file.createNewFile();
FileOutputStream outputStream = new FileOutputStream(file);
int read = 0;
byte[] bytes = new byte[10000];
while ((read = in.read(bytes)) != -1) {
outputStream.write(bytes, 0, read);
}
outputStream.flush();
outputStream.close();
} catch (Exception ex) {
ex.printStackTrace();
}
return file;
}
クライアントにイメージを送信するコード(変換バイト[]エンティティから、クライアントに送信します)
String strFilePath = sysProps.getProperty("user.home") + sysProps.getProperty("file.separator") + "Documents" + sysProps.getProperty("file.separator") + "dev" + sysProps.getProperty("file.separator") + new Random().nextInt(100) + ".jpeg";
FileOutputStream fos = new FileOutputStream(strFilePath);
fos.write(myEntity.getPhoto());
fos.close();
SendPhoto sendPhotoRequest = new SendPhoto();
sendPhotoRequest.setChatId(message.getChatId().toString());
java.io.File fileToSend = new java.io.File(strFilePath);
sendPhotoRequest.setNewPhoto(fileToSend);
// System.out.println("Sending phtoto --> " + strFilePath);
sendPhoto(sendPhotoRequest);
fileToSend.delete();
あなたは?? – gpasch
をrubenlagusする話いけない理由rubenlagusからもらったとJPAを行うためにこれを持っている場合はどう?あなたは、いくつかを持っていますイメージバイト、それを保持しretriそれはまったく同じです。だから問題はJPAにはない。だから問題がどこにあるのかデバッグ –
@gpaschはすでに運がなかったので。 – kabugima2