Как получить изображение в формате PNG в Android - PullRequest
0 голосов
/ 02 июля 2019

У меня есть изображение, которое сохраняется на онлайн-сервере.

Вот почему мне сначала пришлось преобразовать изображение в строку.Но я также хочу показать эту картинку в формате 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);

1 Ответ

0 голосов
/ 02 июля 2019

Просто сохраните ваше изображение в формате .PNG

 bitmapImage.compress(Bitmap.CompressFormat.PNG, 100, fileOutputStream);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...