- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的 Activity 中使用默认相机 Intent 来捕捉图像。之后,我将它们的路径存储在一个数组中。在 Activity 结束时,我将图像复制到我的应用程序文件夹中。由于某种原因,图像没有以完整质量复制。例如:如果 DCIM 文件夹中的图像是 1.04 MB,那么它在我的应用程序文件夹中只有 ~2KB。
我在我的应用程序中使用此代码。调用相机 Intent :
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 1);
在 onActivity 结果中我正在做:
Bitmap photo = (Bitmap) data.getExtras().get("data");
Uri tempUri = getImageUri(context, photo);
imagePath = getRealPathFromURI(tempUri);
imagesList.add(imagePath);
getImageUri() 和 getRealPathFromURI() 方法是:
public Uri getImageUri(Context inContext, Bitmap inImage) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
String path = Images.Media.insertImage(inContext.getContentResolver(),
inImage, "Title", null);
return Uri.parse(path);
}
public String getRealPathFromURI(Uri uri) {
Cursor cursor = context.getContentResolver().query(uri, null, null,
null, null);
cursor.moveToFirst();
int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
return cursor.getString(idx);
}
在 Activity 结束时,我使用此方法将图像复制到我的应用程序文件夹:
for (int i = 0; i < noteImagesList.size(); i++) {
File fileimg = new File(noteImagesList.get(i));
File newImageFile = new File(parentfolderpath,
i+"_newimage.jpg");
newImageFile.createNewFile();
Bitmap myBitmap = BitmapFactory.decodeFile(fileimg
.getAbsolutePath());
FileOutputStream fOut = new FileOutputStream(
newImageFile);
myBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fOut);
fOut.flush();
fOut.close();
if (myBitmap != null) {
if (!myBitmap.isRecycled()) {
myBitmap.recycle();
}
myBitmap = null;
}
}
复制后,图像失去了质量和尺寸。 DCIM 文件夹中的图像很清晰,大约 1 MB,复制后图像模糊,大约 1 KB。
谁能告诉我在复制图像时遗漏了什么?
编辑
如果我将它用于从图库中选择的图像,上面的代码工作正常,但仍然没有相机图像。
编辑2
我也用过这段代码,但结果相同。
public void copyFile(File src, File dst) throws IOException {
FileChannel inChannel = new FileInputStream(src).getChannel();
FileChannel outChannel = new FileOutputStream(dst).getChannel();
try {
inChannel.transferTo(0, inChannel.size(), outChannel);
} finally {
if (inChannel != null)
inChannel.close();
if (outChannel != null)
outChannel.close();
}
}
最佳答案
文档说,如果您传递一个 URI 指示写入文件的位置,那么您将在 extras 数据中取回完整尺寸的图像。但是,如果您不传递 URI,则会返回一个小版本(缩略图)。
因为您没有传递 URI,所以您正在获取缩略图,然后进行保存。/复制它,而不是全尺寸版本。
关于android - 将图像从 DCIM 文件夹复制到另一个文件夹会导致图像质量下降,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25866163/
我正在尝试在特定图像上添加文本。它工作完美,但图像质量较低,尤其是 papyrus.ttf 字体。如何提高图像中文本的质量。但我需要高质量来打印输出。这是我的代码..它非常简单。 header("Co
是否可以获得现有图像的当前质量? 我想加载一个 JPEG 并在不改变质量和 DPI 的情况下再次保存它。 (我需要在保存前做一些像素操作) 最佳答案 JPEG 是一种有损格式。 这样做的直接方式,读取
我正在构建一个标签打印机。它由一个标志和一些文字组成,并不难。我已经花了 3 天时间尝试将原始 SVG Logo 绘制到屏幕上,但 SVG 太复杂,使用了太多渐变等。 所以我有一个高质量的位图 Log
我正在尝试以最快的方式以编程方式降低图像质量。现在,我能够从 byte[] 读取图像,然后作为 MemoryStream 将其读取到 Bitmap 并通过 Drawing。 Imaging.Encod
我允许用户上传图片。但是,我想保持 JPEG 质量不超过 90%。我打算做的是检测当前质量:- 如果少于 90% 什么都不做- 如果超过 90%,则使用 Image Magick 将图像重新压缩到 9
我正在制作一个 Android 应用程序,该应用程序通过使用内置摄像头作为 Intent 来使用摄像头。我正在逐个像素地对照片进行一些分析。我的 wildfire 在普通照片中返回 79000 像素,
我正在使用 python 程序生成一些数据,使用 matplotlib.pyplot 绘制数据,然后将图形显示在 latex 文件中。 我目前正在将图形保存为 .png 文件,但图像质量不是很好。我试
一直在尝试通过应用引擎将以下 png 文件上传到谷歌云存储: 在上传之前,我通过 PIL 运行它来处理任何图像旋转或背景颜色变化等 但是,即使在 python 命令行中运行相同的命令结果很好,但通过应
给定以下 Image 对象(它位于 ListView 对象的 DataTemplate 中): 我应该如何获得高质量的双三次插值图像? (在屏幕上,此图像的大小小于源 PNG,但默认调整大小似乎
如何在 PHP5 中压缩 GIF 图像文件? 我知道可以像这样处理 JPG imagejpeg($resource, $filename, $quality)根据 http://us.php.net/
我使用 html5 Canvas 元素在我的浏览器中调整图像大小。事实证明,质量非常低。我发现了这个:Disable Interpolation when Scaling a 但这无助于提高质量。 下
我正在使用 Visual Studio 2019 构建带有自定义任务 Pane 的 Excel 插件。 在用作自定义任务 Pane 的用户控件中,我添加了 imlNavigation (图片列表) 我
我是一名优秀的程序员,十分优秀!