Android 捕获图像并将其设置为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的图像添加代码如下: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文件,图像就会出现一种线条锯齿(锯齿状外观
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()中,您将获得缩略图图像(位图)作为结果图像。是否有其他图像捕获方法的建议?