Cái này phải lập trình cho Excel để ghi điểm ảnh. Lập trình có thể dùng nhiều ngôn ngữ: VB6, .NET, DELPHI, C++,....
Kỹ thuật làm cái này giống hoạt hình, theo nguyên lý 1 giây = 24 hình, sự thay đổi hình ảnh sau phủ nhật hình ảnh trước trở thành sự chuyển động của clip. Việc vất vả là phải có công cụ gi lại các điểm ảnh của đối tượng theo từng khung hình.
Cái này phải lập trình cho Excel để ghi điểm ảnh. Lập trình có thể dùng nhiều ngôn ngữ: VB6, .NET, DELPHI, C++,....
Kỹ thuật làm cái này giống hoạt hình, theo nguyên lý 1 giây = 24 hình, sự thay đổi hình ảnh sau phủ nhật hình ảnh trước trở thành sự chuyển động của clip. Việc vất vả là phải có công cụ gi lại các điểm ảnh của đối tượng theo từng khung hình.
Việc tô màu trên Excel sheet không cần API, còn nếu lấy điểm ảnh thì phải dùng nó để nhận từng điểm. Việc quan trọng nữa là phải map cặp màu trên Excel và từ hàm API. Ví dụ như màu đỏ trên hàm API là 2, nhưng trong Excel lại là 34 chăng hạn.
Việc tô màu trên Excel sheet không cần API, còn nếu lấy điểm ảnh thì phải dùng nó để nhận từng điểm. Việc quan trọng nữa là phải map cặp màu trên Excel và từ hàm API. Ví dụ như màu đỏ trên hàm API là 2, nhưng trong Excel lại là 34 chăng hạn.
Tầm như anh cũng thừa cơ đấy chứ...Ẹc ẹc. Anh em động viên nhau làm nhỉ. Vụ này mà làm chắc cũng nguốn mất vài tuần (chủ yếu là quay phim & tách ảnh, lấy màu), khi nào xin vợ nghỉ phép thì làm chơi coi.
Để tạo nên đoạn clip đó thì không cần đến 1 đoạn code VBA nào cả bạn ah. Bản thân bài báo cũng lý giải điều đó.
dân trí đã viết:
Với bộ phim stop-motion được anh thực hiện trên nền của phần mềm Excel, trong đó anh sử dụng bảng màu để tạo nên màu sắc cho các bảng tính, tương đương với màu của một điểm ảnh, sau đó lần lượt thay đổi màu sắc của các bảng tính Excel để tạo nên chuyển động cho đoạn phim.
Để có thể lý giải cách thực hiện đoạn clip trên mình sẽ đưa ra một số nguyên lý sau:
Khi bạn xem 1 đoạn clip, tốc độ hiện thị khung ảnh có thể là 14khung/giây hoặc nhiều hơn, nhưng thực sự không hẳn phải vẽ đủ cả 14 khung ảnh. Có thể chỉ cần một hoặc vài khung ảnh nhưng được lập lại liên tiếp trong giây đó.
Với độ nhạy của thị giác con người thì bạn chỉ cần 3-4 khung/giây là có thể "cảm giác" được hình ảnh chuyển động tương đối sinh động.
dân trí đã viết:
Joe Penna đã phải mất đến 5 tiếng đồng hồ cho một đoạn phim ngắn chưa đến 1 phút.
Giả sử mỗi giây, Joe Penna cần tạo ra 3 khung ảnh, vậy thì với 1 đoạn phim dài chưa đến 1 phút (60 giây), anh ta sẽ cần tạo ra khoảng 180 khung hình. Trong 5 tiếng đồ hồ (300 phút) anh ta tạo ra khoảng 180 khung hình, tương ứng mỗi 1,7 phút Joe Penna tạo ra khoảng 1 khung hình.
Tốc độ vẽ có vẻ không tưởng cho lắm. Tuy nhiên trong hoạt hình, thời gian vẽ bức bắt đầu 1 chuyển động, và kết thúc 1 chuyển động là lâu nhất. Còn những bức vẽ "biến đổi" giữa bức "khởi đầu" và "kết thúc" thực hiện nhanh hơn nhiều lần bởi dựa vào bức đầu tiên.
Bằng một chút chỉnh sửa (chẳng hạn nâng tay trái cao hơn, chân trái đá sang phải...) dựa trên bức hình khỏi đầu, người hoạ sĩ sẽ có bức ảnh thứ 2 với khoảng thời gian chỉ bằng 1 phần rất nhỏ so với bức ảnh khởi điểm. Dựa trên bức ảnh thứ 2, người hoạ sĩ sẽ dễ dàng thực hiện tiếp bức thứ 3,4...
Vậy với bức khởi đầu/kết thúc trong một đoạn, Joe Penna tốn khoảng 3 phút, và khoảng hơn 1 phút cho các khung ảnh chuyển tiếp.
Nếu có dịp quan sát công việc của một hoạ viên hoạ hình thì bạn sẽ không phải nghi ngờ tốc độ trên. Bạn sẽ bất ngờ bởi thao tác rất thành thục và lanh lẹ của của một hoạ viên viên hoạt hình. Với một bậc thầy như Joe Penna thì tốc độ làm việc còn có thể gấp 3-4 lần so với một chuyên viên đồ hoạ bình thường.
...và kết quả thực sự ấn tượng, khiến người xem phải thán phục bởi sự tinh tế và đặc biệt là sự kiên nhẫn của Penna.
Đấy là những nét cơ bản về công việc của Joe Penna khi tạo nên đoá clip sinh động trên. Ngoài sự kỳ công tỷ mỷ cũng còn cần tới tài năng của bậc thầy về hoạt hoạ Joe Penna nữa.
Mình đưa ra ý kiến trên dựa trên kinh nghiệm từng làm hoạ viên hoạt hình thôi. Với các bậc thầy về VBA thì việc thực hiện đoạn clip trên có thể còn có cách nào khác?
Để tạo nên đoạn clip đó thì không cần đến 1 đoạn code VBA nào cả bạn ah. Bản thân bài báo cũng lý giải điều đó.
Để có thể lý giải cách thực hiện đoạn clip trên mình sẽ đưa ra một số nguyên lý sau:
Khi bạn xem 1 đoạn clip, tốc độ hiện thị khung ảnh có thể là 14khung/giây hoặc nhiều hơn, nhưng thực sự không hẳn phải vẽ đủ cả 14 khung ảnh. Có thể chỉ cần một hoặc vài khung ảnh nhưng được lập lại liên tiếp trong giây đó.
Với độ nhạy của thị giác con người thì bạn chỉ cần 3-4 khung/giây là có thể "cảm giác" được hình ảnh chuyển động tương đối sinh động.
Giả sử mỗi giây, Joe Penna cần tạo ra 3 khung ảnh, vậy thì với 1 đoạn phim dài chưa đến 1 phút (60 giây), anh ta sẽ cần tạo ra khoảng 180 khung hình. Trong 5 tiếng đồ hồ (300 phút) anh ta tạo ra khoảng 180 khung hình, tương ứng mỗi 1,7 phút Joe Penna tạo ra khoảng 1 khung hình.
Tốc độ vẽ có vẻ không tưởng cho lắm. Tuy nhiên trong hoạt hình, thời gian vẽ bức bắt đầu 1 chuyển động, và kết thúc 1 chuyển động là lâu nhất. Còn những bức vẽ "biến đổi" giữa bức "khởi đầu" và "kết thúc" thực hiện nhanh hơn nhiều lần bởi dựa vào bức đầu tiên.
Bằng một chút chỉnh sửa (chẳng hạn nâng tay trái cao hơn, chân trái đá sang phải...) dựa trên bức hình khỏi đầu, người hoạ sĩ sẽ có bức ảnh thứ 2 với khoảng thời gian chỉ bằng 1 phần rất nhỏ so với bức ảnh khởi điểm. Dựa trên bức ảnh thứ 2, người hoạ sĩ sẽ dễ dàng thực hiện tiếp bức thứ 3,4...
Vậy với bức khởi đầu/kết thúc trong một đoạn, Joe Penna tốn khoảng 3 phút, và khoảng hơn 1 phút cho các khung ảnh chuyển tiếp.
Nếu có dịp quan sát công việc của một hoạ viên hoạ hình thì bạn sẽ không phải nghi ngờ tốc độ trên. Bạn sẽ bất ngờ bởi thao tác rất thành thục và lanh lẹ của của một hoạ viên viên hoạt hình. Với một bậc thầy như Joe Penna thì tốc độ làm việc còn có thể gấp 3-4 lần so với một chuyên viên đồ hoạ bình thường.
Đấy là những nét cơ bản về công việc của Joe Penna khi tạo nên đoá clip sinh động trên. Ngoài sự kỳ công tỷ mỷ cũng còn cần tới tài năng của bậc thầy về hoạt hoạ Joe Penna nữa.
Mình đưa ra ý kiến trên dựa trên kinh nghiệm từng làm hoạ viên hoạt hình thôi. Với các bậc thầy về VBA thì việc thực hiện đoạn clip trên có thể còn có cách nào khác?
Thực ra bài báo chỉ ghi nhận theo quan sát. Lời nói của tác giả cũng chỉ nói cơ bản cách làm. Việc dùng bảng màu là đương nhiên vì nó phải tương thích với ảnh chụp. Nhưng chỉ là bảng mầu thôi thì không thể làm được. Với việc vẽ thì chọn ra bảng mầu mới chỉ là lấy ra hộp bút vẽ chứ vẽ hình như thế nào thì là con người chỉ định.
Nếu tác giả không dùng code để tự động hóa việc tô màu trên từng ô thì tôi cảm phục vì sự kiên nhẫn và tỉ mỉ - Anh ta ngồi so sánh bằng mắt (có thể so sánh với ảnh gốc theo tọa đổ điểm ảnh) và dùng chuột tô từng cell với fill color.
Nếu các bạn để ý trong clip, ở thanh địa chỉ (phía trái thanh Formula) thì thấy các địa chỉ ô thay đổi khi hình chuyển động, điều này có thể là:
1. Anh ta dùng chuột bấn từng ô để tô màu - cực kỳ tỉ mỷ và mất nhiều time.
2. Dùng code để chọn ô và tô mầu. Như clip thì điạ chỉ ô thay đổi liên tục, vậy trước khi tô màu, tác giả dùng lệnh Select rồi tô màu. Thực ra nếu làm làm VBA kinh nghiệm thì không dùng Select mà vẫn tô màu theo địa chỉ ô được, khi đó ta sẽ không thấy địa chỉ ô thay đổi trên clip.
Tôi chắc rằng, nếu với việc viết code thì để làm clip trên thì đỡ mất sức và time hơn rất nhiều. Thời gian mất nhiều là quay phim và cắt những hình cần thiết. Việc lấy các điểm mầu trên ảnh tô vào Cell cũng dùng code hoàn toàn được.
Thực ra bài báo chỉ ghi nhận theo quan sát. Lời nói của tác giả cũng chỉ nói cơ bản cách làm. Việc dùng bảng màu là đương nhiên vì nó phải tương thích với ảnh chụp. Nhưng chỉ là bảng mầu thôi thì không thể làm được. Với việc vẽ thì chọn ra bảng mầu mới chỉ là lấy ra hộp bút vẽ chứ vẽ hình như thế nào thì là con người chỉ định.
Nếu tác giả không dùng code để tự động hóa việc tô màu trên từng ô thì tôi cảm phục vì sự kiên nhẫn và tỉ mỉ - Anh ta ngồi so sánh bằng mắt (có thể so sánh với ảnh gốc theo tọa đổ điểm ảnh) và dùng chuột tô từng cell với fill color.
Nếu các bạn để ý trong clip, ở thanh địa chỉ (phía trái thanh Formula) thì thấy các địa chỉ ô thay đổi khi hình chuyển động, điều này có thể là:
1. Anh ta dùng chuột bấn từng ô để tô màu - cực kỳ tỉ mỷ và mất nhiều time.
2. Dùng code để chọn ô và tô mầu. Như clip thì điạ chỉ ô thay đổi liên tục, vậy trước khi tô màu, tác giả dùng lệnh Select rồi tô màu. Thực ra nếu làm làm VBA kinh nghiệm thì không dùng Select mà vẫn tô màu theo địa chỉ ô được, khi đó ta sẽ không thấy địa chỉ ô thay đổi trên clip.
Tôi chắc rằng, nếu với việc viết code thì để làm clip trên thì đỡ mất sức và time hơn rất nhiều. Thời gian mất nhiều là quay phim và cắt những hình cần thiết. Việc lấy các điểm mầu trên ảnh tô vào Cell cũng dùng code hoàn toàn được.
Mình chỉ diễn giải vấn đề này theo góc nhìn của người từng làm hoạt hoạ thôi, còn VBA chắc là ngoài tầm với của mình rồi. Cho nên không thể lý giải cách thực hiện theo phương pháp của các bậc thầy VBA được. Và nếu chỉ với 5h để một mình có thể tạo ra một chương trình VBA thông minh như vậy chắc đến Bill Gates cũng phải lặn lội đến để bái làm sư phụ.
Ấy! Hoàn toàn làm được nếu dùng VBA, thậm chỉ là rất dễ nữa là đàng khác
Việc của anh họa sĩ chỉ là "chọn lựa các khung hình phù hợp" ---> Xong, cho vào Excel để nó scan ra điểm ảnh
Về vụ scan này thì GPE đã làm từ lâu rồi (link tôi cho ở trên đấy)
Ấy! Hoàn toàn làm được nếu dùng VBA, thậm chỉ là rất dễ nữa là đàng khác
Việc của anh họa sĩ chỉ là "chọn lựa các khung hình phù hợp" ---> Xong, cho vào Excel để nó scan ra điểm ảnh
Về vụ scan này thì GPE đã làm từ lâu rồi (link tôi cho ở trên đấy)
Nếu là chuyện chuyển clip quay sống thành clip chụp trên Excel thì khác nào nào lấy bột xay... làm bột rồi anh. Chắc em cũng bắt trước làm 1 cái để được nhấn like trên youtube.
Nếu là chuyện chuyển clip quay sống thành clip chụp trên Excel thì khác nào nào lấy bột xay... làm bột rồi anh. Chắc em cũng bắt trước làm 1 cái để được nhấn like trên youtube.
Gì cũng được... Vấn đề là ĐÂU PHẢI AI CŨNG BIẾT LÀM THEO CÁCH NÀY
Vôi tôi, cách nào nhanh thì tôi dùng ---> Công cụ mà ta học để làm quái gì, chẳng lẽ DÙNG TAY làm thì mới PRO à?
Vì thế mà tôi rất muốn xem tận mắt cái file Excel ấy (không phải qua đoạn video) để xem thử "tay ấy" ngầu cở nào
Nhanh là bao lâu?
Thời gian anh viết 1 chương trình như thế?
Thời gian cần để tạo ra dữ liệu đầu vào?
Thời gian để chỉnh sửa, chọn lọc dữ liệu đầu vào phù hợp?
Và chương trình đó cho ra dữ liệu đầu ra là gì? 1 Clip hoàn chỉnh luôn không?
Nếu không ra một clip hoàn chỉnh, vậy cần bao nhiêu thời gian để tạo ra clip dựa trên dữ liệu đầu ra của chương trình đó và cần sử dụng thêm phần mềm hỗ trợ nào nữa ko?
5h để làm tất cả những công việc ở trên đó.
Nếu chú ý 1 tý thì chúng ta có thể thấy clip đó là 1 sản phẩm hoạt hoạ 2D dạng "low resolution pixel art" tạm hiểu là "nghệ thuật với độ phân giải thấp" đặc trưng bởi những điểm ảnh rời rạc khi phóng to khung hình chuyển động.
Ứng dụng nghệ thuật này rất phổ biến trên nền mobile nhất là với game. Để tạo nên những game dạng này thì người ta cần đến những hoạ sĩ chuyên về lĩnh vực trên và những hoạ sĩ này có lương không hề rẻ và tốn khá nhiều công sức cho chỉ một game nhỏ.
Vậy nếu có thể tạo ra những phần mềm như anh nói thì cần gì phải thuê những hoạ sĩ như vậy? Và nếu ai có thể tạo ra những phần mềm như vậy chắc chắn sẽ có cơ hội thành triệu phú?
Nói về phần mềm hỗ trợ hoạt hoạ hiện nay thì chỉ có phần mềm 3D cụ thể là 3DSMax và Mayar là thành công. Còn các phần mềm hoạt hoạ 2D thì chỉ mới đạt tới mức hỗ trợ người vẽ chứ ko thể hoàn toàn thay thế. Ngay cả với Nhật Bản - nước có công nghệ làm hoạt hình nổi tiếng hiện cũng phải thuê thợ vẽ tận Việt Nam và nhiều nước khác chứ họ cũng không thể tạo nên một phần mềm diễn hoạt sinh động như người vẽ.
Thực tế thì vấn đề này có vẻ không đúng lắm. Xử lý 1 tập tin bình thường (chưa nén) bao giờ cũng nhanh hơn nhiều so với 1 tập được nén, vì xử lý 1 tập tin bị nén sẽ bao gồm cả thời gian giải nén, ghi ra file rồi đọc lại file vào bộ nhớ (nếu không giải nén trực tiếp vào bộ nhớ). Với nhiều định dạng nén, kể cả giải nén 1 tập tin trong 1000 được nén chung thì cũng tốn thời gian gần bằng với giải nén 1000 (chỉ bớt được thời gian ghi ra 999 file). Nếu anh đã từng thử qua sẽ biết.
Mình có thử chương trình của anh siwtom ở các độ phân giải khác nhau và thu được tốc độ hiện thị như sau:
Thử 1: 100x100 (10.000 điểm ảnh): tốc độ hiển thị bình quân khoảng 1 khung hình/20s.
Thử 2: 60x60 (3.600 điểm ảnh): tốc độ hiện thị bình quân gần 1 khung hình/8s.
Thử 3: 30x30 (900 điểm ảnh): tốc độ hiện thị bình quân gần 1 khung hình/3s.
Mình có thử đếm số điểm ảnh mà anh hoạ sĩ sử dụng vào khoảng 45x80 (3.600 điểm ảnh) tương đương phép thử 2.
Để bảo đảm tính khách quan của phép thử mình đã tắt hết các chương trình khác kể cả Internet Explorer đang mở GPE.
Như vậy để Excel có thể trình diễn 1 đoạn clip với tốc độ tối thiểu 3 khung hình trên giây (đủ tạo cảm giác chuyển động) thì cần phải có tốc độ gấp 24 lần tốc độ xử lý hiện tại của cái máy tính cũ mình đang sử dụng...
Như vậy ngoài khả năng về hoạt hoạ thì anh hoạ sĩ này cũng là 1 bậc thầy về VBA đồng thời sở hữu 1 chiếc máy tính dù không xếp hạng siêu thì cũng phải rất khủng.
Còn nếu dùng 1 chiếc máy tính thông thường thì có lẽ Excel sẽ trình diễn 1 đoạn clip ...giật cục nhất trên youtube vì khoảng 1 vài giây mới nhảy được 1 khung hình... Trừ khi anh hoạ sĩ này chụp lại từng khung hình một và chuyển sang một phần mềm dựng phim để đẩy nhanh tốc độ hiển thị. Àh cái này thì mình có thấy ở 1 tích tắc của đoạn clip.
Mặt khác, anh hoạ sĩ buộc phải biên tập trước 1 đoạn video trước đó vì theo tác giả diễn viễn cũng chính là nhà sản xuất.
Như vậy anh ta sẽ phải thực hiện ít nhất những việc sau:
Sửa soạn đạo cụ, trang phục và 1 kịch bản ngắn.
Diễn, dừng và chỉnh lại góc quay... và diễn..
Chọn ra những đoạn ưng ý, biên tập lại đoạn clip được quay.
Chuyển đoạn clip về độ phân giải thấp phù hợp.
Dùng chương trình bóc đoạn clip ấy ra khoảng 14x60=840 khung ảnh.
Cắm cụi viết 1 chương trình VBA giúp anh ta hiện thị lại số ảnh nói trên.
Nếu không có hoặc không thể mượn được 1 chiếc máy tính đủ tốc độ để trình diễn số ảnh trên 1 cách mượt mà, thì anh ta sẽ buộc phải dựng lại 840 khung ảnh đã được bóc ra từ clip thành 1 cái clip khác.
Cuối cùng 1 sản phẩm không khác mấy đoạn clip có độ phân giải thấp ban đầu... Khác chăng nó được hiển thị trên Excel...
Và tôi xin được thán phục trước tiên là kỳ công của anh ta cho 1 sản phẩm như vậy chỉ trong 5 tiếng đồng hồ... Sau đó là ngưỡng mộ sự song toàn gần như hoàn hảo rất nhiều kỹ năng của anh hoạ sĩ đó.
Code của bạn rất hay, scan hình ra rất mượt! Đương nhiên vậy là vì bạn format đến 16 triệu màu... và đó cũng là nguyên nhân khiến cho tốc độ chậm
Xem đoạn video clip ở bài 1, hình như người ta chỉ dùng có 56 màu thôi ---> Với lượng màu này thì chắc tốc độ không còn là vấn đề rồi
Thực tế thì vấn đề này có vẻ không đúng lắm. Xử lý 1 tập tin bình thường (chưa nén) bao giờ cũng nhanh hơn nhiều so với 1 tập được nén, vì xử lý 1 tập tin bị nén sẽ bao gồm cả thời gian giải nén, ghi ra file rồi đọc lại file vào bộ nhớ (nếu không giải nén trực tiếp vào bộ nhớ). Với nhiều định dạng nén, kể cả giải nén 1 tập tin trong 1000 được nén chung thì cũng tốn thời gian gần bằng với giải nén 1000 (chỉ bớt được thời gian ghi ra 999 file). Nếu anh đã từng thử qua sẽ biết.
Code của bạn rất hay, scan hình ra rất mượt! Đương nhiên vậy là vì bạn format đến 16 triệu màu... và đó cũng là nguyên nhân khiến cho tốc độ chậm
Xem đoạn video clip ở bài 1, hình như người ta chỉ dùng có 56 màu thôi ---> Với lượng màu này thì chắc tốc độ không còn là vấn đề rồi
Có lẽ thật dại dột khi cố thực hiện lại công việc của một bậc thầy nào đó .
Tuy nhiên mình cũng đã cố thử để tìm 1 câu trả lời cho bản thân mình...là liệu Excel có thể chiếu được 1 đoạn phim một cách "mượt mà" ở mức chấp nhận được hay không? hix
Có lẽ thật dại dột khi cố thực hiện lại công việc của một bậc thầy nào đó .
Tuy nhiên mình cũng đã cố thử để tìm 1 câu trả lời cho bản thân mình...là liệu Excel có thể chiếu được 1 đoạn phim một cách "mượt mà" ở mức chấp nhận được hay không? hix
For r = 1 To height Step lResol
For c = 1 To width Step lResol
r1 = Int(r / lResol) + 1
c1 = Int(c / lResol) + 1
Arr(r1, c1) = GetPixel(DC, c - 1, r - 1)
Next c
Next r
Với biến lResol ta cho = 5 chẳng hạn thì việc scan cái hình em be.bmp của bạn gần như diễn ra trong tích tắc
--------------------------
Mình thì không có hứng thú với việc làm video nhưng lại rất hứng thú với code của bạn (scan pic) và muốn nghiên cứu nó để ứng dụng cho những việc khác sau này. Vậy nhân đây mình xin bạn tư vấn giúp 3 câu hỏi dưới đây: 1> Nếu ta dùng file jpg (chứ không phải bmp) thì phải sửa code thế nào?
2> Nếu ta scan hình là 1 object nằm trên bảng tính thì sẽ sửa code thế nào?
3> Chuyển từ Interior.Color sang Interior.ColorIndex bằng cách nào?
Nếu đi theo quan điểm chỉ dùng chính Excel để trình diễn thì mình có mấy ý sau:
Với hình tròn cỡ 40x40 (khoảng 90 điểm ảnh hữu dụng), còn hình ngôi sao thì ước chừng 110-130 điểm ảnh hữu dụng.
Trên khung hình biểu thị cỡ 45x80=3600. Tỷ lệ điểm ảnh hữu dụng so với diện tích khung hiển thị là 90/3600=2,5%. Với tỷ lệ tương đối lý tưởng này nhưng tốc độ hiện thị vẫn chưa đủ đánh lừa được thị giác. Người xem vẫn cảm giác được rõ là hình đang được vẽ từ trên xuống.
Vậy giả sử hiển thị 1 khung hình có tỷ lệ điểm ảnh hữu dụng là 50% (gấp 20 lần) hoặc bình quân khoảng 10% (gấp 4 lần) thì tốc độ hiển thị sẽ ra sao? Nếu làm như cách anh nói thì chắc chắn tốc độ hiển thị sẽ không đều lúc nhanh (với hình nhỏ) và chậm (nếu hình lớn). Mình có thử chỉnh timer tăng/giảm đi như tốc độ hiển thị cũng không khả quan hơn.
Một vấn đề nữa có liên quan đến ý trước đây là tốc độ hiện thị khung ảnh trong một giây tối thiểu là bao nhiêu để đủ đánh lừa thị giác người xem. Sau khi bắt tay vào làm thử thì mình phát hiện ra rằng:
Với 1 chuyển động tốc độ trung bình thì cũng cần ít nhất khoảng 9 khung ảnh.
Còn với 3 khung ảnh chỉ phù hợp nếu diễn tả 1 chuyển động nhanh hoặc rất nhanh kiểu như 1 chiếc siêu thanh chỉ kịp lưu lại trên võng mạc 1 tấm ảnh của nó trong tích tắc.
Như vậy thì yêu cầu về tốc độ máy tính sẽ ko phải là 24 lần mà phải là 72 lần nhanh hơn. Cứ tạm cho định luật Moore đúng mãi mãi thì cứ sau 1,5 năm tốc độ máy tính nhanh gấp đôi thì chắc cũng cỡ 10 năm nữa 1 cái máy tính bình thường mới có thể làm nhãn quan chúng ta thoả mãn... trừ trường hợp chúng ta có tiền mua 1 chiếc siêu máy tính.
Tuy nhiên nếu có ai đó đang quan tâm vấn đề này thì cũng đừng bi quan như mình... Hiện tại chúng ta vẫn có thể dùng các ô Excel để thực hiện việc chiếu 1 đoạn clip đấy nhé kể cả với 1 độ phân giải không tưởng. Nhưng cách làm sẽ rất khác và sẽ cần nhiều lần của 5 tiếng đồng hồ.
For r = 1 To height Step lResol
For c = 1 To width Step lResol
r1 = Int(r / lResol) + 1
c1 = Int(c / lResol) + 1
Arr(r1, c1) = GetPixel(DC, c - 1, r - 1)
Next c
Next r
Với biến lResol ta cho = 5 chẳng hạn thì việc scan cái hình em be.bmp của bạn gần như diễn ra trong tích tắc
--------------------------
Mình thì không có hứng thú với việc làm video nhưng lại rất hứng thú với code của bạn (scan pic) và muốn nghiên cứu nó để ứng dụng cho những việc khác sau này. Vậy nhân đây mình xin bạn tư vấn giúp 3 câu hỏi dưới đây: 1> Nếu ta dùng file jpg (chứ không phải bmp) thì phải sửa code thế nào?
2> Nếu ta scan hình là 1 object nằm trên bảng tính thì sẽ sửa code thế nào?
3> Chuyển từ Interior.Color sang Interior.ColorIndex bằng cách nào?
Lúc nào cũng có những kiến thức mới lạ. Cảm ơn bạn nhé
Hỏi thêm: Có phải hàm GetPictureObject dùng được với Picture nằm trên đĩa hoặc Picture là 1 Object trên bảng tính không?
(hỏi thế là vì mấy cái ghi chú bạn ghi bằng font gì tôi đọc không ra ---> Chỉ đoán)
Lúc nào cũng có những kiến thức mới lạ. Cảm ơn bạn nhé
Hỏi thêm: Có phải hàm GetPictureObject dùng được với Picture nằm trên đĩa hoặc Picture là 1 Object trên bảng tính không?
(hỏi thế là vì mấy cái ghi chú bạn ghi bằng font gì tôi đọc không ra ---> Chỉ đoán)
Sub Button1_Click()
Dim k As Long, r As Long, g As Long, b As Long, mau As Long, tmp As Long, Arr(1 To 56) As String
For k = 1 To 56
Cells(k, 1).Interior.ColorIndex = k
mau = Cells(k, 1).Interior.Color
b = mau \ 65536
tmp = mau Mod 65536
g = tmp \ 256
r = tmp Mod 256
Arr(k) = "ColorIndex = " & k & ", Color = " & mau & " = RGB(" & r & ", " & g & ", " & b & ")"
Next k
Range("B1:B56").Value = Application.WorksheetFunction.Transpose(Arr)
End Sub
Cảm ơn bạn về cái Handle, trước đây đã biết, bây giờ lại biết thêm 1 chút
Giải thích rất chi tiết nhưng nói thật lòng là tôi hiểu chắc cở.. 10%
Nhưng không sao... thề với lòng, cái gì tôi muốn biết thì sẽ cố gắng tìm hiểu ---> Thông qua các thí nghiệm để ngộ ra vấn đề (đơn giản vì tôi chưa học qua bất cứ trường lớp nào về Excel hay lập trình)
Một lần nữa cảm ơn bạn! Nếu có vấn đề gì tôi sẽ lại làm phiền tiếp
(Riêng về thằng em Interior.ColorIndex chắc ta sẽ bàn vào 1 topic khác thích hợp. Nói chung là tôi muốn chuyển từ 16 triệu màu sang 56 màu chứ không phải ngược lại)
Cảm ơn bạn về cái Handle, trước đây đã biết, bây giờ lại biết thêm 1 chút
Giải thích rất chi tiết nhưng nói thật lòng là tôi hiểu chắc cở.. 10%
Nhưng không sao... thề với lòng, cái gì tôi muốn biết thì sẽ cố gắng tìm hiểu ---> Thông qua các thí nghiệm để ngộ ra vấn đề (đơn giản vì tôi chưa học qua bất cứ trường lớp nào về Excel hay lập trình)
Một lần nữa cảm ơn bạn! Nếu có vấn đề gì tôi sẽ lại làm phiền tiếp
(Riêng về thằng em Interior.ColorIndex chắc ta sẽ bàn vào 1 topic khác thích hợp. Nói chung là tôi muốn chuyển từ 16 triệu màu sang 56 màu chứ không phải ngược lại)
Cảm ơn bạn về cái Handle, trước đây đã biết, bây giờ lại biết thêm 1 chút
Giải thích rất chi tiết nhưng nói thật lòng là tôi hiểu chắc cở.. 10%
Nhưng không sao... thề với lòng, cái gì tôi muốn biết thì sẽ cố gắng tìm hiểu ---> Thông qua các thí nghiệm để ngộ ra vấn đề (đơn giản vì tôi chưa học qua bất cứ trường lớp nào về Excel hay lập trình)
Một lần nữa cảm ơn bạn! Nếu có vấn đề gì tôi sẽ lại làm phiền tiếp
(Riêng về thằng em Interior.ColorIndex chắc ta sẽ bàn vào 1 topic khác thích hợp. Nói chung là tôi muốn chuyển từ 16 triệu màu sang 56 màu chứ không phải ngược lại)
1. Dùng hàm của siwtom có thể lấy ra 3 tham số RGB của 56 màu Excel
2. Thử bằng 1 phần mềm đồ họa nào đó (Paint chằng hạn) như sau:
- mở cửa sổ chọn màu có 3 ô RGB
- gõ tham số RGB của 1 màu Excel vào
- thay đổi lần lượt từng tham số R, G, B từng đơn vị một, đến khi nào màu không chấp nhận được nữa.
- Ghi lại phạm vi thay đổi các tham số có thể chấp nhận
- Dùng cách tính ngược với hàm ở bước 1, tính ra phạm vi màu có thể quy về 1 màu thử của Excel.
- chuyển qua màu thử thứ 2 của Excel.