У меня есть изображение, которое сохраняется на онлайн-сервере.
Вот почему мне сначала пришлось преобразовать изображение в строку.Но я также хочу показать эту картинку в формате PDF.Так как я могу использовать эту картинку в качестве PNG.
Или есть какой-то другой способ, чтобы я мог показать его в PDF, используя iTextpdf
.Я сбит с толку.Я много искал, но ничего не помогло.
Вот мой код (MainActivity
):
String imageName = null;
final ImageSaver imageSaver = new ImageSaver(MainActivity.this);
if (imageUri != null && !imageUri.isEmpty()) {
imageName = imageSaver.getFileName();
Glide.with(MainActivity.this).asBitmap().load(imageUri)
.listener(new RequestListener<Bitmap>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) {
// TODO : upload image here...
imageSaver.save(resource);
return true;
}
}).submit();
} else {
Log.e(TAG, "uploadImageToServer: no image to upload!!!");
}
Класс ImageSaver:
public class ImageSaver {
private static String directoryName = "images";
public String getFileName() {
return fileName;
}
private String fileName;
private Context context;
public ImageSaver(Context context) {
this.context = context;
this.fileName = generateFileName();
}
public String save(Bitmap bitmapImage) {
String result= "";
FileOutputStream fileOutputStream = null;
try {
fileOutputStream = new FileOutputStream(createFile());
bitmapImage.compress(Bitmap.CompressFormat.JPEG, 100, fileOutputStream);
result = fileName;
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (fileOutputStream != null) {
fileOutputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
@NonNull
private File createFile() {
File directory = context.getDir(directoryName, Context.MODE_PRIVATE);
if(!directory.exists() && !directory.mkdirs()){
Log.e("ImageSaver","Error creating directory " + directory);
}
return new File(directory, fileName);
}
public static byte[] getImage(Context context, String imageName)
{
try {
File directory = context.getDir(directoryName, Context.MODE_PRIVATE);
File image = new File(directory, imageName);
Bitmap b = BitmapFactory.decodeStream(new FileInputStream(image));
//return BitmapUtils.convertBitmapToByteArrayUncompressed(b);
return BitmapUtils.convertBitmapToByteArray(b);
}
catch (Exception e)
{
e.printStackTrace();
return null;
}
}
private static String generateFileName() {
DateFormat dateFormat = new SimpleDateFormat("yyMMddHHmmss");
Date date = new Date();
return "image_" + dateFormat.format(date) + ".jpeg";
}
}
Ранее я добавлял изображения из папок ресурсов:
try {
InputStream ims = getAssets().open("naam.PNG");
Bitmap bmp = BitmapFactory.decodeStream(ims);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
Image image = Image.getInstance(stream.toByteArray());
image.scaleToFit(75, 90);
image.setAlignment(Element.ALIGN_CENTER);
cl = new PdfPCell(image, true);
cl.setHorizontalAlignment(Element.ALIGN_CENTER);
cl.setVerticalAlignment(Element.ALIGN_CENTER);
cl.setBorderColor(BaseColor.WHITE);
cl.setFixedHeight(21);
tableclerk.addCell(cl);
}
catch(IOException ex) { return; }
tableclerk.setWidths(columnWidthsc);
mDoc.add(tableclerk);