小尺寸,高分辨率图像

时间:2012-12-06 09:05:43

标签: java android image image-resizing

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

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

希望有任何人可以提供教程链接解释或完整代码答案应用此

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

非常感谢您的帮助。

4 个答案:

答案 0 :(得分:4)

使用图像平铺可以最好地解决这个问题。你将你的图像分成许多较小的“瓷砖”,比如500x500px,然后将它们放在网格上 - 选择你喜欢的布局。对于放大的渲染,只会绘制屏幕上的那些图块。

以下是有关详情的参考资料: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上的“视网膜”显示器的DPI为326 - 这是锐度的基准;此屏幕上的像素太小,人眼无法在典型的保持距离下单独/清晰地看到。旧单调LCD显示器的DPI在30-60范围内 - 你可以很容易地看到单个像素的方形形状。
  3. 要在显示屏上显示的图片部分 - 视口。有两种不同的极端:

    1. 缩小:您希望显示屏上显示完整的图片。在您的情况下,图片的像素比显示器多(显示器有物理限制,没有足够的像素以原始分辨率显示原始图片),因此显示器上的一个像素将从图片中渲染一组像素,平均颜色和亮度,或
    2. 自然分辨率:自然分辨率是指原始图像中的一个像素恰好显示在屏幕上的一个像素上。在你的情况下,你只能看到大约四分之一的图像。此缩放具有最大的清晰度,但图像的某些细节可能太小而无法看到,因为眼睛实际上无法看到各个显示像素。
    3. 放大:您希望在显示屏上显示图片的更小部分,其中图片中的原始像素实际上大于显示屏。这里,图片中的一个像素将显示在显示屏上的几个或多个像素上。
  4. 现在,Android图像库将有所帮助。当您在显示器上渲染图像时,库将缩放图片以“适合”显示器上的像素 - 您的实际图片将保持不变。

    我希望借助这种新语言,你可以看到基本的限制,因此可以决定如何继续。

答案 1 :(得分:1)

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

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

使用Bitmap.compress()将位图保存到SD卡。

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

答案 2 :(得分:1)

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

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

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

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

答案 3 :(得分: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

希望有所帮助。