ปัญหา Java JLab นำรูปเคลื่อนไหวมาซ้อนทับรูปนิ่ง

กระทู้คำถาม
ตัวอย่างที่ผมนำมาทดลองนะครับ
https://www.cp.eng.chula.ac.th/~somchai/ULearn/Programming/index.htm
1. การพัฒนาซอฟต์แวร์ >>> วงจรการพัฒนาโปรแกรม

************************
ปัญหาที่ผมสงสัยครับ
************************

ผมได้ลองนำภาพเคลื่อนไหว ชื่อ bird 4.gif  = รูปการ์ตูนเคลื่อนไหว
มาซ้อนทับภาพนิ่ง ชื่อ sky3.jpg = รูปภาพมือ

===========
สิ่งที่ต้องการ คือ ภาพการ์ตูนเคลื่อนไหว อยู่บนมือ (ภาพมือ คือ ภาพนิ่ง )
===========
**** แต่ผลลัพธ์ที่แสดงออกมา กลับเป็นภาพนิ่ง

sky3.jpg = รูปภาพมือ
[img]http://image.free.in.th/v/2013/ia/190705022032.jpg[/img]

bird 4.gif  = รูปการ์ตูนเคลื่อนไหว ( ต้องเปิดด้วย internet exploer นะครับ)
[img]http://image.free.in.th/v/2013/ie/190705022334.gif[/img]

=========
code JLAB ( copy comment ภาษาไทย จาก JLab แล้ว ภาษาไทยมันมั่วๆ นะครับ )
=========

import jlab.graphics.DWindow;
import java.util.Scanner;

/* โปรแกรมผสมภาพ นะครับ */

public class ChromaKey {
public static void main(String[] args) {
DWindow wfg = new DWindow();                    // สร้างหน้าต่างเบื้องหน้า
wfg.loadImage("c:/java101/bird4.gif");            //นำภาพเบื้องหน้า (รูปการ์ตุน) ขึ้นมา
DWindow wbg = new DWindow();                  //สร้างหน้าต่างเบื้องหลัง
wbg.loadImage("c:/java101/sky3.jpg");          //นำภาพเบื้องหลัง (รูปมือ) ขึ้นมา

int width = wfg.getWidth();                             //นำค่าความกว้างของรูปการ์ตูน มาเก็บในตัวแปร width
int height = wfg.getHeight();                          //นำค่าความสูงของรูปการ์ตูน มาเก็บในตัวแปร height
DWindow win = new DWindow(width, height);                   //สร้างหน้าต่าง win ที่มีความสูง กับ ความกว้างเท่ากับขนาดของรูปการ์ตูน
int[][] fg = wfg.getPixmap();                                                //หยิบข้อมูลของรูปมือ ออกมาทีละจุดเม็ดสี
int[][] bg = wbg.getPixmap();                                              //หยิบข้อมูลของรูปการ์ตูน ออกมาทีละจุดเม็ดสี
int[][] mix = win.getPixmap();                                             //สร้างหน้าต่างขึ้นใหม่เพื่อรองรับรูปผสม ระหว่างมือ กับ การ์ตูน
for (int x = 0; x < fg.length; x++) {                                       //เทียบเม็ดสีทีละจุดระหว่างภาพมือกับการ์ตูน เริมต้นจากแนวนอน
                                                                                           //เพิ่มค่าแนวนอนทีละ1
for (int y = 0; y < fg[0].length; y++) {                                  //เทียบเม็ดสีทีละจุดระหว่างภาพมือกับการ์ตูน เริมต้นจากแนวตั้ง
                                                                                          //เพิ่มค่าแนวแกนตั้งทีละ1
int g = DWindow.getG(fg[x][y]);                                         //หยิบแม่สีเขียว ของภาพมือ พิกัด(x,y) เก็บในตัวแปร g
if (g == 255) {                                                                    //ตรวจสอบว่า แม่สีเขียวที่หยิบมา เป็นสีสดหรือไม่
mix[x][y] = bg[x][y];                                                           //ถ้าจุดที่หยิบมาเป็นสีเขียวสด ให้นำจุดในภาพมือ พิกัด(x,y)
                                                                                         //ไปใส่ในภาพผสมที่พิกัด (x,y)
} else {                                                                              //ถ้าไม่ใช่สีเขียวสด
mix[x][y] = fg[x][y];                                                            //ให้นำจุดในภาพการ์ตูน พิกัด(x,y) ไปใส่ในภาพผสมที่พิกัด (x,y)
}
}
}
win.setPixmap(mix);                                                         //เอารูปที่ผสมเสร็จแล้ว ไปตั้งที่หน้าต่างผลลัพธ์แล้วแสดงภาพออกมา
}
}

ขอบคุณครับ ยิ้ม

+++++ไม่เกี่ยวข้องนะ++++++++++++
https://ppantip.com/topic/39015803
+++++++++++++++++++++++++++
แก้ไขข้อความเมื่อ
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่