如何通过减少像素来减小图像的大小

时间:2016-07-19 10:49:00

标签: matlab

我试图通过减少width,height和colorChannel中的像素值来减小图像的大小。我试图将其设为0(表示黑色),然后文件大小的值增加。

任何人都可以建议我如何在不使用imresize的情况下减小尺寸。

2 个答案:

答案 0 :(得分:0)

您可以通过删除质量参数来减小图像的大小(在下面的示例中等于75)

sharp('input.jpg')
  .resize(300)
  .quality(75)
  .toFile('result.jpg', function(err, info) {
    if(err) console.error(err);
    console.log(info);
  });

答案 1 :(得分:0)

在matlab中,size指的是矩阵的行数和列数(或者对于大于2的维度,它是每个维度的长度。 e.g。

>> A = [0.1,0.2,0.3,0.4,0.5;0.6,0.7,0.8,0.9,1];
>> size(A)
ans =
     2     5
>> whos A
  Name      Size            Bytes  Class     Attributes

  A         2x5                80  double 

A在内存中占用80个字节,因为它是double类型的数组。 如果要将A用作图像,减少其内存占用的方法是将其转换为无符号的8位整数类型,即uint8:

>> A = im2uint8(A)
A =
   26   51   77  102  128
  153  179  204  230  255
>> whos A
  Name      Size            Bytes  Class    Attributes

  A         2x5                10  uint8              

但我不知道你为什么要关心matlab工作区的内存占用。

听起来像你可能想要说的是你想要获得一个更小但不牺牲分辨率的文件。但如果是这种情况,您需要指定我们正在谈论的输出文件类型。如果它只是一个matlab .mat文件,那么上面就可以了。如果您尝试转换为.jpg.png或其他内容,那么它只取决于您传递到导出功能的选项类型,这将决定压缩质量等。< / p>

如果您需要实际有用的帮助,请进一步澄清您的问题。