android - 从画廊添加图像并在 android studio 中保存为 pdf
问题描述
我在 android studio (Java) 中制作了一个应用程序,可以在文本框中填写一些简短的数据。该应用程序还有两个按钮,一个用于从图库加载图像,一个用于将完整数据保存为 pdf。我可以成功保存所有文本数据,但加载图像有问题。图像已成功加载到应用程序,但我不知道如何将其保存为 pdf。图像作为 ImageView 对象加载。只是提到pdf部分我使用itext。
请帮助提供将 ImageVIew 对象保存到 pdf 文件的提示或代码。
解决方案
我有同样的问题,但我可以解决。首先我改变了我用来选择图像的方式,并用这段代码替换了它:
Intent getImage = new Intent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(getImage, GALLERY_REQUEST_CODE);
然后,在 onActivityResult 类中,我使用以下方法将 uri 转换为位图:
if(requestCode==GALLERY_REQUEST_CODE && resultCode== RESULT_OK && data!=null){
Uri imageData = data.getData();
String[] filePath = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(imageData,filePath,null,null,null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePath[0]);
String myPath = cursor.getString(columnIndex);
cursor.close();
Bitmap bitmap = BitmapFactory.decodeFile(myPath);
然后将位图传递给pdf
pdf.addFoto(bitmap);
最后,在 pdf 模板中,我使用它来将图像放入表格中:
public void addFoto (Bitmap u) {
try{
PdfPTable tabla = new PdfPTable(1);
tabla.setWidthPercentage(60);
tabla.setSpacingBefore(10);
tabla.setSpacingAfter(10);
Bitmap bmp = u;
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
Image image = Image.getInstance(stream.toByteArray());
PdfPCell imageCell = new PdfPCell();
imageCell.addElement(image);
tabla.addCell(imageCell);
document.add(tabla);
推荐阅读
- bash - 将 csv 文件中的每一列分配给数组
- flutter - 如何停止颤动刷卡器中的循环?
- python - 获取数据框中存在的给定行的索引
- powerbi - 在 Power Query 中,如何删除分隔符两侧的重复项?
- flutter - 如何在颤动的库比蒂诺时间选择器中设置特定时间?
- unity3d - Unity如何将相同颜色的所有像素更改为另一种颜色?
- python - Imageio.imwrite 不保存正确的值
- javascript - 创建或更新联系人时 activecampaign api 出错
- javascript - 加载产品图片出错时不显示默认图片
- powerbi - DAX 转换为分和秒