Giải pháp tăng tốc, thay thế hàm GetPixel (1 người xem)

  • Thread starter Thread starter dhn46
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

dhn46

Hướng tới tương lai
Tham gia
1/3/11
Bài viết
3,251
Được thích
3,870
Xin chào GPE,
Dhn46 xin hỏi vấn đề sau nhờ các anh chị trợ giúp:
Để đọc Pixel từ 1 ảnh dhn46 dùng code:
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long
Mã:
Sub GetPicPixel()
    Dim lColor As String
    Dim winHwnd As Long
    Dim i As Integer, j As Integer
    winHwnd = GetWindowDC(0)
    For i = 32 To 600 Step 5
        For j = 187 To 777 Step 5
            lColor = GetPixel(winHwnd, i, j)
            Sheet1.Cells(j / 5 - 36, i / 5 + 10).Interior.Color = lColor
        Next
    Next
End Sub

Để tái tạo Pixel thu được thì Dhn46 dùng code
Mã:
Private Sub PrintPic()
    Dim i As Long
    Dim j As Long
    Arr = Sheet1.[P1:DY119]
    Draw.[D4:HZ137].Interior.Color = 5287936
    For i = 1 To UBound(Arr, 1)
        For j = 1 To UBound(Arr, 2)
            Draw.Cells(i + 10, j + 60).Interior.Color = Arr(i, j)
        Next
    Next
End Sub
Việc sử dụng GetPixel cho tốc độ đọc rất chậm đặc biệt setup độ phân giải cao. Vậy có cách nào lấy Pixel nhanh hơn cách GetPixel hay không? (Mục đích đưa toàn bộ Pixel thu được vào Array)
Dhn46 có đính kèm file nháp để các chị dễ hình dung câu hỏi.
Mong nhận được phản hồi từ các anh chị.
 

File đính kèm

Mong phản hồi từ các anh chị.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom