我需要以jpg / png格式调整我的图片大小(升级或缩小)。我正在使用双线性插值来调整大小。我的代码在数组中给出的值很好。但是要用图像测试结果,我需要RGB565和RGB888转储。
由于我的任务是调整图像大小,如果我能获得图像宽度和高度的转储,或者只是算法也可以,我将不胜感激。
我正在研究C.请帮助我。
由于
答案 0 :(得分:1)
如果你所缺少的是从RGB888到RGB565的转换,那么它很容易。为每个像素调用以下函数:
unsigned short int rgb888Torgb565(unsigned int rgb888Pixel)
{
int red = (rgb888Pixel >> 16) & 0xff;
int green = (rgb888Pixel >> 8 ) & 0xff;
int blue = rgb888Pixel & 0xff;
unsigned short b = (blue >> 3) & 0x001f;
unsigned short g = ( (green >> 2) & 0x003f ) << 6;
unsigned short r = ( (red >> 3) & 0x001f ) << 11;
return (unsigned short int) (r | g | b);
}
将该功能应用于所有像素。每个都将从3个字节缩小到2个字节。
答案 1 :(得分:1)
我在Python中将png转换为原始RGB 565格式的解决方案(称为png2fb.py):
#!/usr/bin/python
import sys
from PIL import Image
if len(sys.argv) == 3:
# print "\nReading: " + sys.argv[1]
out = open(sys.argv[2], "wb")
elif len(sys.argv) == 2:
out = sys.stdout
else:
print "Usage: png2fb.py infile [outfile]"
sys.exit(1)
im = Image.open(sys.argv[1])
if im.mode == "RGB":
pixelSize = 3
elif im.mode == "RGBA":
pixelSize = 4
else:
sys.exit('not supported pixel mode: "%s"' % (im.mode))
pixels = im.tostring()
pixels2 = ""
for i in range(0, len(pixels) - 1, pixelSize):
pixels2 += chr(ord(pixels[i + 2]) >> 3 | (ord(pixels[i + 1]) << 3 & 0xe0))
pixels2 += chr(ord(pixels[i]) & 0xf8 | (ord(pixels[i + 1]) >> 5 & 0x07))
out.write(pixels2)
out.close()