Java Android PDF到PNG质量差
我正在尝试将一个页面从.pdf文件转换为.png文件。一切都正常,但是质量很差,即使我将压缩期间的质量设置为100。有人能解释一下为什么它会给我带来如此可怕的结果吗 PDF至PNGJava Android PDF到PNG质量差,java,android,pdf,png,Java,Android,Pdf,Png,我正在尝试将一个页面从.pdf文件转换为.png文件。一切都正常,但是质量很差,即使我将压缩期间的质量设置为100。有人能解释一下为什么它会给我带来如此可怕的结果吗 PDF至PNG try { inputStream = new FileInputStream(file); long length = file.length(); bytes = new byte[(int) length]; int offset = 0;
try {
inputStream = new FileInputStream(file);
long length = file.length();
bytes = new byte[(int) length];
int offset = 0;
int numRead = 0;
while (offset < bytes.length && (numRead = inputStream.read(bytes, offset, bytes.length - offset)) >= 0) {
offset += numRead;
}
ByteBuffer buffer = ByteBuffer.NEW(bytes);
PDFFile pdf_file = new PDFFile(buffer);
PDFPage page = pdf_file.getPage(1, true);
RectF rect = new RectF(0, 0, (int) page.getBBox().width(),
(int) page.getBBox().height());
Bitmap image = page.getImage((int)rect.width(), (int)rect.height(), rect, true, true);
root = new File("/storage/emulated/0/DCIM" + "/Pay Reports");
if (!root.exists()) {
root.mkdirs();
}
file = new File(root, "PayPeriod" + readFromFile("startPayPeriod.txt").substring(2) + "_" + readFromFile("endPayPeriod.txt").substring(2) + ".png");
FileOutputStream os = new FileOutputStream(file);
image.compress(Bitmap.CompressFormat.PNG, 100, os);
}catch (Exception e) {
e.printStackTrace();
试试看{
inputStream=新文件inputStream(文件);
long length=file.length();
字节=新字节[(int)长度];
整数偏移=0;
int numRead=0;
而(偏移量=0){
偏移量+=numRead;
}
ByteBuffer缓冲区=ByteBuffer.NEW(字节);
PDFFile pdf_file=新的PDFFile(缓冲区);
PDFPage page=pdf_file.getPage(1,true);
RectF rect=new RectF(0,0,(int)page.getBBox().width(),
(int)page.getBBox().height());
位图图像=page.getImage((int)rect.width(),(int)rect.height(),rect,true,true);
root=新文件(“/storage/simulated/0/DCIM”+“/Pay Reports”);
如果(!root.exists()){
root.mkdirs();
}
文件=新文件(根,“PayPeriod”+readFromFile(“startPayPeriod.txt”)。子字符串(2)+“”+readFromFile(“endPayPeriod.txt”)。子字符串(2)+“.png”);
FileOutputStream os=新的FileOutputStream(文件);
image.compress(Bitmap.CompressFormat.PNG,100,os);
}捕获(例外e){
e、 printStackTrace();
询问编写您的PDFFile
和PDFPage
类的人。如果您包括一个示例,就可以更容易地确定您看到的质量损失类型。我猜这是因为您将点采样到像素1:1,并且库没有提示或反别名。尝试使用位图image=page.getImage(4*(int)进行采样,例如1:4rect.width(),4*(int)rect.height(),rect,true,true);