【发布时间】:2018-03-06 00:52:59
【问题描述】:
(注意:我不能使用任何直接调整图像大小的库,我想知道调整大小的核心逻辑)
我有一个尺寸为 256*256 的灰度图像。我想修改它并创建以下三个图像 a) 尺寸为 128*128 的图像 b) 尺寸为 64*64 的图像 c) 尺寸为 32*32 的图像。
伪代码
File fi = new File("E:\\input.raw");
byte[] fileContent = Files.readAllBytes(fi.toPath());
File fo= new File("E:\\output.raw");
FileOutputStream stream = new FileOutputStream(fo);
int i=0;
for(;i<fileContent.length;i++){
//dividing by 2 to create image with dimensions 128*128
fileContent[i]= (byte) ((fileContent[i])/2);
stream.write(fileContent[i]);
}
stream.close();
以上代码不起作用。它正在创建尺寸为 256*256 的图像。 由于某些原因,我不允许使用任何直接减小尺寸的库。我想知道如何将 256*256 图像转换为 128*128 尺寸?
【问题讨论】:
-
“由于某些原因”。你的意思是这是某种面试或家庭作业问题。虽然这里允许提出家庭作业问题,但您需要先展示您的作业。你基本上什么都没写。如果这是一个面试问题,那么你不太适合这个地方。
-
@Kayaman 我已经添加了我有问题的工作的代码 sn-p。
-
为什么你会认为分割字节值会影响图像的大小?无论如何,这没有任何意义。
-
只是一个旁注——如果你想从 256x256 调整到 128x128,你必须除以 4(因此你'^重新取正方形,因此需要除以 sq(2)= 4)
-
您基本上从每个 4 像素的正方形中取出一个像素(例如左上角)。为了获得更好的效果,请先过滤原始图像以去除高频内容。