2017-12-27 75 views
0

への書き込みHD映像が575 x 431にリサイズ取得した後、PDFBox:私は画像を変換しようとしていますPDF

// Read image width and height 
    float imageWidth = bitmap.getWidth(); 
    float imageHeight = bitmap.getHeight(); 

    // Read page width and height ignoring the margins 
    float pageWidth = PDRectangle.A4.getWidth() - (margin_left_right * 2); 
    float pageHeight = PDRectangle.A4.getHeight() - (margin_top_bottom * 2); 

    Log.d("Image Resize", String.valueOf(imageWidth) + " x " + String.valueOf(imageHeight)); 
    Log.d("Image Resize", String.valueOf(pageWidth) + " x " + String.valueOf(pageHeight)); 

    # Image: 4160.0 x 3120.0 
    # Page: 575.27563 x 821.8898 

    Log.d("Image Resize", String.valueOf(requiredRatio)); 
    Log.d("Image Resize", String.valueOf(newImageWidth) + " x " + String.valueOf(newImageHeight)); 

    # Required ratio: 0.13828741 
    # After scaling: 575 x 431 

問題が大き4160 x 3120とA4のPDFに画像をcameraaをされて使用して撮影し、非常にピクセル化に見えます。

一般的にこの問題をPDFで解決するにはどうすればよいですか? contentStream.drawImage()を使用して書いているときに4160 x 3120と答える方法は600 dpiにありますか?


これquestionは、画像の高さと幅に等しいサイズのページにサイズ変更せずに書かれた場合、OPのみそれが損失なしに縮小すべきか、15%で画像を見ることができるという事実をサポート品質の?

答えて

0

contentStream.drawImage(PDImageXObject, float x, float y) 
contentStream.drawImage(PDImageXObject, float x, float y, float height, float width) 

contentStream.drawImage()に明示的な幅と高さを指定することにより、これを達成することができることを行うには、オーバーロードdrawImage()方法があります。たとえば、画像を4倍小さく表示したいが、同じ解像度を維持したい場合は、

scaleDownRatio = 0.25; 
pageSize = PDRectangle.A4; 

# this will draw image at bottom left corner 
PDImageXObject pageImageXObject = LosslessFactory.createFromImage(document, bitmap); 
contentStream.drawImage(pageImageXObject, 0, 0, bitmap.getWidth() * ratio, bitmap.getHeight() * ratio) 

# to center it you can use something like 
contentStream.drawImage(pageImageXObject, (pageSize.getWidth() - bitmap.getWidth() * ratio)/2, (pageSize.getHeight() - bitmap.getHeight() * ratio)/2, bitmap.getWidth() * ratio, bitmap.getHeight() * ratio) 
+0

あなたの質問に対するあなたの答えはあなたがリンクしている他人の質問に対するあなたの答えと同じです。 WTF ?? –

+0

DPIを直接指定する方法はありませんが、これを使ってDPIを入力すると、ダウンサンプリングせずに画像が縮小されて印刷されるように調整できます –

+0

@TilmanHausherr btw ** me **でした。ここにその人にも助けになるだろう。 –

関連する問題