Я предполагаю, что вы имеете в виду 16-битный дисплей RGB, а не дисплей, каждый из цветов (красный, зеленый и синий) которого равен 16 битам. Я также предполагаю, что вы знаете, как ваши значения r, g и b кодируются в этом 16-битном пространстве, потому что есть две возможности .
Итак, если вы знаете, как разделить свое цветовое пространство, теперь вы можете использовать серию байтовых массивов для представления ваших данных. Принимается непростое решение: стоит ли использовать байтовые массивы, потому что у вас есть набор алгоритмов, которые уже могут выполнять работу с этими массивами, но обойдутся вам в несколько дополнительных битов на байт, которые вы, возможно, не сможете потратить, или сохраните все в этом 16-битном формате, а затем выполните работу с соответствующими битами каждого 16-битного пикселя. Только вы действительно можете ответить на этот вопрос; если у вас есть память, я бы выбрал подход байтового массива, потому что он, вероятно, быстрее, и вы получите немного дополнительной точности, чтобы в конце изображения выглядели гладкими (э).
Учитывая эти предположения, вопрос действительно отвечает, сколько времени у вас есть на вашем устройстве. Если у вас очень быстрое устройство, вы можете реализовать Lanczos resampling . Если у вас менее быстрое устройство, бикубическая интерполяция также работает очень хорошо. Если у вас устройство еще медленнее, билинейная интерполяция ваш друг.
Если у вас действительно нет скорости, я бы изменил масштабирование в каком-нибудь внешнем приложении, например, в Photoshop, и сохранил бы серию растровых изображений, которые вы загружаете по мере необходимости.