ここに私のジレンマがあります: RGBA RAW 画像: マスター画像 (1 つ目) とサブタイトル トラック (2 つ目) が必要で、2 つ目の画像のアルファ チャネルに基づいた方法でそれらをオーバーレイしたい: ゼロの場合、次に、2 番目の画像からピクセルを取得します。0xFF の場合は、最初の画像からピクセルを取得します。それ以外の場合は、最初の画像に 2 番目の画像のオーバーレイを作成します。これに使用されるコードは次のとおりです。
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 画像であり、すでにそこに何らかの画像が含まれています。カラフル...だから、得たい効果を字幕画像がオーバーレイされているわけではありませんが、色の全範囲を見ることができます(たとえば、アルファが増加する赤/緑のオーバーレイ画像があり、オーバーレイが欲しいその下に画像がある「淡い」赤/緑のオーバーレイのように見える画像ですが、上記のアプローチでは、下の画像に多くのカラフルなピクセルが表示されます)。これに対するもう少し良いアプローチはありますか?
ありがとう、フリッツォーネ