2016-04-22 50 views
0

我無法找到任何問題。Android縮放位圖簽名到pdf

我的問題是這樣的。我必須創建一個帶有簽名的pdf。我沒有問題來創建pdf或創建簽名,但是當我將它們放在一起時,我將簽名的大小調整爲較小,但簽名的質量已降低。

這裏我給你看簽名和縮放簽名。

create signature

scaled signature

這是我如何創建簽名的位圖。

mSignaturePad = (SignaturePad) dialog.findViewById(R.id.signature_pad); 

    Bitmap signaturePad = mSignaturePad.getSignatureBitmap(); 

    createPDF(signaturePad); 

這是我如何創建pdf頁面的畫布。

PdfDocument.Page page = document.startPage(pageInfo); 

    Canvas canvas = page.getCanvas(); 

最後,我在繪製位圖後得到縮放的位圖。

int width = source.getWidth(); 
    int height = source.getHeight(); 

    float scaleWidth = ((float) 100)/width; 
    float scaleHeight = ((float) 140)/height; 
    Matrix matrix = new Matrix(); 
    matrix.postScale(scaleWidth, scaleHeight); 
    matrix.postRotate(-90); 

    Bitmap scaledBitmap = Bitmap.createBitmap(source, 0, 0, width, height, matrix, true); 

    Paint paint = new Paint(); 
    paint.setAntiAlias(true); 
    paint.setFilterBitmap(true); 
    paint.setDither(true); 

    canvas.drawBitmap(scaledBitmap, 387, 717, paint3); 

這不是我測試縮放位圖的唯一方法。我測試了很多方法,但沒有奏效。我怎樣才能縮放這個位圖?

我希望你能幫助我。謝謝。

psd:對不起,我的英語。

回答

0

下面介紹如何從assets文件夾中添加圖片。如果你已經有了位圖,那麼沒有任何問題只是在位圖處理中遵循它。您也可以按照Example

File myFile1 = new File("/sdcard/ourdata/" + pdfname + ".pdf"); 
myFile1.createNewFile(); 
Document pdfDoc = new Document(); 
PdfWriter docWriter = PdfWriter.getInstance(document, 
     new FileOutputStream(myFile1)); 
document.open(); 
PdfContentByte cb = docWriter.getDirectContent(); 
InputStream inputStream = getAssets().open("signature.png"); 
Bitmap bmp = BitmapFactory.decodeStream(inputStream); 
ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); 
Image signature = Image.getInstance(stream.toByteArray()); 
signature.setAbsolutePosition(400f, 150f); 
signature.scalePercent(25f); 
document.add(signature);