我正在尝试找到一种最佳方法,将8 x 8像素的JPEG小图像合并为占用更少磁盘空间的较大JPEG文件。
我有一个图像,该图像已分成8 x 8像素的各种较小图像,但是我注意到包含所有这些较小图像的文件夹占用的磁盘空间总量明显大于原始图像的磁盘空间。注意到这一点,我认为相反地,将较小的图像合并为一个较大的图像可能会占用较少的存储空间。
我在Python中使用OpenCV,我注意到仅读取和写入图像就会创建一个新文件,该文件比原始文件占用更多的空间(我也不知道为什么会发生这种情况)。但是,当我将较小的图像组合成一个垂直拉伸时,将所有8 x 8像素彼此堆叠在一起时,与我将图像按其原始尺寸放置时相比,它占据了更多的空间。我想知道是否有一种方法可以确定合并图像的方式,以使合并图像所占用的空间最小。最初的8 x 8图像在合并后的图像中处于什么位置,或合并后的图像的尺寸如何都没有关系。
以下是将图像分割成各种较小图像的代码:
def save(path):
img = cv2.imread('Images\\' + path)
max_ind = 1
for i in range(0,len(img)-8,8):
for j in range(0,len(img[0])-8,8):
sections = img[i:i+8]
save = []
for section in sections:
save.append(section[j:j+8])
cv2.imwrite("Saves\\" + str(max_ind) + ".jpg",np.array(save))
max_ind += 1
这是我用来保存图像的代码,其所有8 x 8像素都堆叠在一起:
def save_master(path):
img = cv2.imread('Images\\' + path)
master = []
for i in range(0,len(img)-8,8):
for j in range(0,len(img[0])-8,8):
sections = img[i:i+8]
save = []
for section in sections:
save.append(section[j:j+8])
master.extend(np.array(save))
cv2.imwrite("Saves\\" + "master.jpg",np.array(master))