Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/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
Java 小尺寸、高分辨率图像_Java_Android_Image_Image Resizing - Fatal编程技术网

Java 小尺寸、高分辨率图像

Java 小尺寸、高分辨率图像,java,android,image,image-resizing,Java,Android,Image,Image Resizing,我创建了一个名为it(app A)的应用程序,它需要在res drawable文件夹中存储大量高分辨率图像,(我知道我可以远程下载,但我需要将其保存在drawable res文件夹中),其: 3000 x 4000由数码相机拍摄的JPEG图像,因为这将导致应用程序大小不可接受的增加,并导致在设备上运行时出现内存异常,所以我们可以创建另一个名为 (应用程序B),仅用于调整图像大小,这将拾取存储在SD上的图像 (仅用于调整大小),然后将其调整为较小尺寸的图像,但不损失图像质量并保持高图像分辨率,然后

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

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

希望有人能提供教程链接来解释这一点,或完整的代码答案来应用这一点

注意:我试着使用计算机软件:photoshop或format factory,但都会影响分辨率

我们将非常感谢您的帮助。

用于读取二次采样位图

BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inSampleSize = 2;
Bitmap bitmap = BitmapFactory.decodeFile(pathName, opts);
并使用Bitmap.compress()将位图保存到SD卡

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

这最好使用图像平铺来解决。你把你的图像分割成许多更小的“瓷砖”,比如500x500px,然后在网格上布局——选择你最喜欢的布局。对于放大的渲染,仅绘制屏幕上的平铺

以下是有关更多详细信息的参考:

要分割图像,请按照以下说明操作:

为了实现真正的平滑行为,您还可以从原始图像创建一个缩小的图像,并在缩小栅格时使用缩小的平铺。用户放大时切换回原始分辨率

编辑

我的目标是我有一张3000*4000分辨率的大照片,我想把它改小一些,但保持同样的分辨率

有几个概念需要记住:

  • 图片的原始分辨率(以3000x4000像素为例)
  • 显示器的分辨率。例如,Nexus 4的显示器为768x1280像素。显示器有一个重要特性:DPI或每英寸点数。这是物理屏幕上总共测量1英寸(25.4mm)的像素数。苹果iPhone上的“视网膜”显示器的DPI为326,这是清晰度的基准;此屏幕上的像素太小,人眼无法在典型的保持距离下单独/清晰地看到。旧的单调LCD显示器的DPI在30-60范围内-你可以很容易地看到单个像素的方形
  • 要在显示器上显示的图片部分-视图端口。有两个不同的极端:

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


    我希望通过这种新的语言,您可以看到基本的约束条件,从而决定如何继续。

    减少图像大小的基本方法有三种:

    • 减少它的大小或质量(例如,通过减少像素的数量,或每个像素的大小)-Jpeg做的事情与此非常相似
    • 压缩文件-这就是GIF和PNG所做的
    • 使用矢量图形
    由于您正在谈论进一步压缩数码相机jpeg图像,因此您无法在不损失更多质量的情况下进一步压缩图像本身(jpeg已经降低了质量并压缩了文件,这就是为什么它是web上使用最多的类型)。 任何在不进一步降低质量的情况下压缩文件的尝试都不会给您带来太多的好处(尽管您可以尝试几种不同的压缩方案,并且很少有机会选择正确的方案来获得一些实质性的降低)


    从理论上讲,如果你能将所有的图像合并到一个图像中,并将其压缩为一个图像,你可能会获得一些进展,但当谈到这样的大小时,你不太可能处理这么大的文件

    正如您所说,您已经尝试过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.
    
    我自己已经试过了