Вот моя дилемма: у меня есть изображения RGBA RAW: главное изображение (первое) и дорожка субтитров (второе), и я хочу наложить их таким образом, основываясь на альфа-канале второго изображения: это ноль, затем взять пиксели из второго изображения, если это 0xFF, взять пиксели из первого изображения, иначе создайте наложение второго изображения на первое. Вот код, используемый для этого:
if(frame->bytes[pc + 3] == 0xFF) /* this is NO transparency in the overlay image, meaning: take over the overlay 100% */
{
pFrameRGB->data[0][pc] = frame->bytes[pc]; // Red
pFrameRGB->data[0][pc+1] = frame->bytes[pc+1];// Green
pFrameRGB->data[0][pc+2] = frame->bytes[pc+2];// Blue
}
else
if(frame->bytes[pc + 3] != 0) /* this is full transparency in the overlay image, meaning: take over the image 100% */
{
pFrameRGB->data[0][pc] |= frame->bytes[pc]; // Red
pFrameRGB->data[0][pc+1] |= frame->bytes[pc+1];// Green
pFrameRGB->data[0][pc+2] |= frame->bytes[pc+2];// Blue
pFrameRGB->data[0][pc+3] = frame->bytes[pc+3]; // Alpha
}
В приведенном выше коде pFrameRGB является целевым RGBA-изображением, уже содержащим там какое-то изображение, а frame-> bytes является изображением "overlay / subtitle" ... И вот мой вопрос: с некоторыми красочными изображениями overlay / subtitle место назначения слишком красочное ... поэтому не похоже, чтобы изображение субтитров было наложено, какой эффект я хочу получить, но вы можете видеть целый ряд цветов (например: у меня есть наложение красного / зеленого цвета с возрастающей альфой, и я бы как наложение изображения, чтобы выглядеть как «бледное» красно-зеленое наложение с изображением под ним, однако с подходом выше я получаю много красочных пикселей на изображении ниже). У вас есть несколько лучший подход к этому?
Спасибо,
fritzone