如何在保持尺寸和像素相同的同时保存图像?

时间:2017-01-08 13:15:25

标签: matlab

我必须保存图像。但是当我尝试保持尺寸相同时,像素值会发生变化。有没有办法保持两者完好无损。

C=imread('download.jpg');   



 C=rgb2gray(C);

%convert to DCT
 [r1 c1]=size(C);
  CDCT=floor(dct2(C)); 
  dct=floor(dct2(C));
  [r c]= size(dCipherText);
  bye=c; %lenght of message bits
  for i=r1:r1

for j=c1:-1:c1-28


 .....%some operation on CDCT

  end

end 
imshow(idct2(CDCT),[0 255])
i=idct2(CDCT);

 set(gcf,'PaperUnits','inches','PaperPosition',[0 0 c1 r1])
print -djpeg fa.jpg -r1
 end

1 个答案:

答案 0 :(得分:1)

请勿使用打印来保存图片。 使用:

imwrite(i,'downdload_dct.jpg')

print将使用图中定义的纸张尺寸等,而不是图像数据本身。 imwrite使用i中的数据。如果您只想重新保存图像,则不需要imshow

- 更新 - 抱歉我现在看到,当你的意思是'缩放'时,你不是指图片的缩放,而是像素值的缩放,以及从标量转换回颜色。 imshow仅“缩放”屏幕上的内容,而不是实际数据。因此,您需要手动/数字地执行此操作。假设i是真实的,那么这样的事情就行了。

% ensure i ranges from 1 to 255 
i = 1 + 254*(i-min(i(:))*(max(i(:))-min(i(:))) ;
% convert indices to RGB colour values (m x n x 3 array)
i = ind2rgb(i,jet(256));

未经测试!