4

我创建了一个名为它的应用程序(应用程序 A),它需要在 res 可绘制文件夹中存储大量高分辨率图像,(我知道我可以远程下载,但我需要将其保存在可绘制 res 文件夹中),它:

数码相机拍摄的 3000 x 4000 JPEG 图像,因为这将导致无法接受的应用程序大小增加,并导致在设备上运行时内存异常增加,所以我们可以创建另一个名为
(app B) 的应用程序,仅用于调整图像大小,将选择将存储在 SD 上的这些图像(仅用于调整大小),然后将其调整为较小尺寸的图像,但不会损失图像质量并保持高图像分辨率 ,然后 以 PNG 或 JPEG 格式再次将其保存到 SD ,所以然后我可以从 SD 卡中获取图像,然后将其保存到(应用程序 A)资源文件并使用它,具有合理的大小和高分辨率,

希望是否有人可以提供解释该内容的教程链接或应用此内容的完整代码答案,

注意:我尝试使用计算机软件作为:photoshop 或格式工厂,但都影响分辨率。

您的帮助将不胜感激和感谢。

4

4 回答 4

4

这最好使用图像平铺来解决。你把你的图像分成许多较小的“图块”,比如 500x500 像素,然后放在一个网格上 - 选择你最喜欢的布局。对于放大渲染,只会绘制那些在屏幕上的图块。

这是更多详细信息的参考:How to tile and scroll a large image (10000x10000) in android

要拆分图像,请按照此处的说明进行操作:Android - Split Drawable

对于真正平滑的行为,您还可以从原始图像创建一个缩小的图像,并在缩小网格时使用缩小的图块。当用户放大时切换回原始分辨率。

编辑

我的目标是我有 3000*4000 分辨率的大图片我想将其转换为更小的尺寸但保持相同的分辨率

有几个概念要记住:

  1. 图片的原始分辨率(在您的情况下为 3000x4000 像素)
  2. 显示器的分辨率。例如,Nexus 4 的显示屏为 768x1,280 像素。显示器有一个重要的属性:DPI 或每英寸点数。这是物理屏幕上 1 英寸(25.4 毫米)的像素数。iPhone 上 Apple 的“视网膜”显示屏的 DPI 为 326——这是清晰度的基准;此屏幕上的像素太小,人眼无法在典型的握持距离下单独/清晰地看到。老式单调 LCD 显示器的 DPI 在 30-60 范围内 - 您可以轻松看到单个像素的方形。
  3. 要在显示器上显示的图片部分 -视口。有两种不同的极端:

    1. 缩小:您希望在显示屏上显示完整的图片。在您的情况下,图片的像素比显示器多(显示器的物理限制是没有足够的像素以原始分辨率显示原始图片),因此显示器上的一个像素将从图片,平均颜色和亮度,或
    2. 自然分辨率:自然分辨率是原始图像中的一个像素精确地显示在屏幕上的一个像素上。在您的情况下,您只能看到大约四分之一的图像。这种缩放具有最大的清晰度,但图像的某些细节可能太小而无法看到,因为眼睛实际上无法看到各个显示像素。
    3. 放大:您希望在显示器上显示图片的更小部分,其中图片的原始像素实际上比显示器大。在这里,图片中的一个像素将显示在显示器上的几个或多个像素上。

现在,Android 图像库将提供帮助。当您在显示器上渲染图像时,库将缩放图片以“适合”显示器上的像素 - 您的实际图片将保持不变。

我希望通过这种新语言,您可以看到基本限制,从而决定如何进行。

于 2012-12-11T01:12:34.273 回答
1

使用BitmapFactory.Options.inSampleSize读取二次采样位图。

BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inSampleSize = 2;
Bitmap bitmap = BitmapFactory.decodeFile(pathName, opts);

并使用 Bitmap.compress() 将位图保存到 sdcard。

编辑:如果你仍然想保持分辨率,你可以尝试设置BitmapFactory.Options.inPreferredConfig = Bitmap.Config.RGB_565;解码位图,这可以减少一半的内存成本,因为大多数默认配置是 RGB_8888。

于 2012-12-06T09:19:53.023 回答
1

基本上有 3 种方法可以减小图像的大小:

  • 减少它的大小和/或质量(例如通过减少像素的数量,或每个像素的大小)——Jpeg 做的事情与此非常相似。
  • 压缩文件——这是 GIF 和 PNG 所做的。
  • 使用矢量图形。

由于您正在谈论进一步压缩数码相机 jpeg 图像,因此您无法在不损失更多质量的情况下进一步缩小图像本身(JPEG 已经降低了质量并压缩了文件,这就是为什么它是最常用的类型网络)。任何在不进一步降低质量的情况下压缩文件的尝试都不会给你太多的理由(尽管你可以尝试几种不同的压缩方案,而且你很少有机会找到正确的方案来获得一些实质性的减少)。

从理论上讲,如果您可以将所有图像一起添加到单个图像中,并将其压缩为单个图像,那么您可能会获得一些基础,但是在谈论这样的尺寸时,您不太可能能够处理这样的一个巨大的文件。

于 2012-12-12T11:26:24.180 回答
1

正如你所说,你已经尝试了 Photoshop 并获得了关于分辨率的不可接受的结果,

仅在 Photoshop CS 和 CS2 中发现了一个简单的技巧

When you want to reduce an image go to the Image> Image Size menu. Click on 
Resample Image and choose Bicubic Sharper from the drop-down menu. This is the 
best setting for making sure that an image doesn't blur. The example photo of the
flower started at 2,000 pixels across. I stepped it down to 250, and then again 
to 125 with almost no loss of sharpness. 

另一件事要记住

when resizing is to try to do it only once on an image.
Many people will resize repeatedly as they search for the perfect fit for 
a design element, and then end up with an image with a lot of blur. It's always
better to experiment on a duplicate of the image. Then, when you've settled on 
the final dimensions, you can go back to the original and resize it just once.

我已经亲自尝试过,并且得到了很好的小尺寸图像分辨率。

改编自此链接:http ://www.photoshopsupport.com/tutorials/jennifer/bicubic.html

希望那有帮助。

于 2012-12-12T11:41:41.607 回答