Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 捕获图像并将其设置为PDF文件后,如何消除图像锯齿状外观?_Android_Image_Pdf - Fatal编程技术网

Android 捕获图像并将其设置为PDF文件后,如何消除图像锯齿状外观?

Android 捕获图像并将其设置为PDF文件后,如何消除图像锯齿状外观?,android,image,pdf,Android,Image,Pdf,我有一个包含两个活动的应用程序:MainActivity和PhotoActivity。它使用iText库生成PDF格式的报告文件。从Main可以调用PhotoActivity,这里有一个按钮可以调用Android摄像头,使用Android.provider.MediaStore.ACTION\u IMAGE\u CAPTURE。我在Main上贴花了一个公共位图数组,以保留多个图像,以防用户需要拍摄多张图片,并且效果良好 现在唯一的问题是,一旦设置为PDF文件,图像就会出现一种线条锯齿(锯齿状外观

我有一个包含两个活动的应用程序:MainActivity和PhotoActivity。它使用iText库生成PDF格式的报告文件。从Main可以调用PhotoActivity,这里有一个按钮可以调用Android摄像头,使用Android.provider.MediaStore.ACTION\u IMAGE\u CAPTURE。我在Main上贴花了一个公共位图数组,以保留多个图像,以防用户需要拍摄多张图片,并且效果良好

现在唯一的问题是,一旦设置为PDF文件,图像就会出现一种线条锯齿(锯齿状外观)。看起来应用程序正在拍摄精确的imageView图像,并将其设置为PDF文件。所以它把一个很小的图像变成了一个210 x 297mm的页面,当我试图用编程的方式放大它时,它会变得锯齿状,像是低分辨率。相反,我想拍摄用户刚刚拍摄的高分辨率照片,并缩小一点,以便在同一页面中容纳一两张,但保持可接受的质量

我的相机有5米像素,并且它被设置为最大分辨率。谁能指出我做错了什么

MainActivity的图像添加代码如下:

public static ArrayList<Bitmap> bitmaps = new ArrayList<Bitmap>();

    private void addImage(Document document) {

    Image myImg = null;
    document.newPage();

    for(Bitmap bitmap : bitmaps){

    try {
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
    //    stream.flush();
    //    stream.close();
        myImg = Image.getInstance(stream.toByteArray());
        myImg.setAlignment(Image.MIDDLE);
        myImg.scaleAbsolute(400, 600);
        document.add(myImg);

        } catch (BadElementException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }
}
    b1 = (Button) findViewById(R.id.button1);

    iv = (ImageView) findViewById(R.id.imageView);

    b1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
            startActivityForResult(intent, REQUEST_IMAGE_CAPTURE);
        }
    });
}

@Override
public void onResume()
{
    super.onResume();

   // iv.setImageBitmap(MainActivity.bitmaps);

    if(MainActivity.bitmaps.size() > 0){

        iv.setImageBitmap(MainActivity.bitmaps.get(MainActivity.bitmaps.size()-1));
    }
}

        @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {

            Bundle extras = data.getExtras();
            MainActivity.bitmaps.add((Bitmap) extras.get("data"));
            iv.setImageBitmap(MainActivity.bitmaps.get(MainActivity.bitmaps.size()-1));
        }

        else if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK) {

            Uri selectedImage = data.getData();
            String[] filePathColumn = { MediaStore.Images.Media.DATA };

            Cursor cursor = getContentResolver().query(selectedImage,
                    filePathColumn, null, null, null);
            cursor.moveToFirst();

            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            String picturePath = cursor.getString(columnIndex);
            cursor.close();

            MainActivity.bitmaps.add(BitmapFactory.decodeFile(picturePath));
            iv.setImageBitmap(MainActivity.bitmaps.get(MainActivity.bitmaps.size()-1));
        }
    }

@Override
protected void onDestroy() {
    super.onDestroy();
}

是,如果您通过ACTION_image_capture intent捕获图像,则会出现此问题,因为在onActivityResult()中,您将获得作为结果图像的缩略图(位图)。是否有其他图像捕获方法的建议?是,如果您通过ACTION_image_capture intent捕获图像,则会出现此问题,因为在onActivityResult()中您将获得缩略图图像(位图)作为结果图像。是否有其他图像捕获方法的建议?是,如果您通过ACTION_image_capture intent捕获图像,则会出现此问题,因为在onActivityResult()中,您将获得缩略图图像(位图)作为结果图像。是否有其他图像捕获方法的建议?