如何在android中获取PNG格式的图像
Posted
技术标签:
【中文标题】如何在android中获取PNG格式的图像【英文标题】:How to get image in PNG format in android 【发布时间】:2019-11-12 18:05:05 【问题描述】:我有一张图片保存在在线服务器中。
这就是为什么我必须先将图像转换为字符串。 但我也想以 PDF 格式显示这张图片。那么我怎样才能将这张图片用作PNG。
或者有没有其他方法可以让我使用iTextpdf
在 PDF 上显示它。我很迷惑。我搜索了很多,但没有任何帮助。
这是我的代码 (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);
【问题讨论】:
Bitmap.CompressFormat.JPEG
您在此处将其保存为 JPEG。另存为 PNG。
这里我需要它作为 JPEG。问题是如何在 MainActivity 中将此图像用作 png?
然后将其另存为-JPEG和PNG,并在需要PNG的地方使用PNG
我已经做到了,但是如何通过这种方法将此图像返回为 PNG?
你用什么来编辑/创建 PDF?
【参考方案1】:
只需将图像保存为 .PNG 格式
bitmapImage.compress(Bitmap.CompressFormat.PNG, 100, fileOutputStream);
【讨论】:
这里我需要它为 JPEG。问题是如何在 MainActivity 中将此图像用作 png?以上是关于如何在android中获取PNG格式的图像的主要内容,如果未能解决你的问题,请参考以下文章