In VBA, come posso leggere il valore del colore di ciascun pixel di un'immagine?Leggi i colori dei pixel di un'immagine
Ho trovato this solution in VB 6.0 ma non si applica direttamente in VBA.
In VBA, come posso leggere il valore del colore di ciascun pixel di un'immagine?Leggi i colori dei pixel di un'immagine
Ho trovato this solution in VB 6.0 ma non si applica direttamente in VBA.
provare la soluzione pubblicate su questo sito qui: http://sim0n.wordpress.com/2009/03/27/vba-q-how-to-get-pixel-colour/
ho dovuto cambiare un ByRef a un ByVal ma a parte questo funziona bene. Inserisci un'immagine utilizzando Inserisci> Immagine e assegna una macro all'evento su clic. L'ho appena impostato impostando il colore della cella A1 sul colore su cui fai clic, ma sono certo che l'idea ti verrà in mente.
#If VBA7 Then
Private Declare PtrSafe Function GetPixel Lib "gdi32" (ByVal hdc As LongPtr, ByVal x As Long, ByVal y As Long) As Long
Private Declare PtrSafe Function GetCursorPos Lib "user32" (ByRef lpPoint As POINT) As LongPtr
Private Declare PtrSafe Function GetWindowDC Lib "user32" (ByVal hwnd As LongPtr) As LongPtr
#Else
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (ByRef lpPoint As POINT) As Long
Private Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long
#End If
Private Type POINT
x As Long
y As Long
End Type
Sub Picture1_Click()
Dim pLocation As POINT
Dim lColour As Long
Dim lDC As Variant
lDC = GetWindowDC(0)
Call GetCursorPos(pLocation)
lColour = GetPixel(lDC, pLocation.x, pLocation.y)
Range("a1").Interior.Color = lColour
End Sub
Per utilizzarlo, posizionare un'immagine in un foglio di lavoro, fare clic con il pulsante destro sull'immagine e assegnarvi questa macro.
Ottima risposta, testato e funziona perfettamente. +1 – hammythepig
Lo stesso qui, con informazioni aggiuntive: puoi anche usare immagini che semplicemente incollate nel foglio (la procedura "Inserisci> Immagine" non è obbligatoria). Grazie ancora +1 e grazie @KM Hs – Arthur
se il codice utilizza l'API, è piuttosto possibile implementarlo in VBA impostando alcuni riferimenti alle funzioni dell'API ... –
Di quale tipo di file stai chiedendo? Qualcuno in particolare? Forse un elenco di tipi di file? Diversi formati di file memorizzeranno le informazioni sui colori in modo diverso, quindi leggere diversi tipi richiederà sapere cosa ci sarà richiesto di leggere. – jhoe
La risposta qui sotto funziona alla grande ma se in realtà vuoi scansionare ogni pixel (piuttosto che cliccarci sopra) allora questo https://stackoverflow.com/questions/45998565/scan-image-pixel-by-pixel-in-vba/ 46004570 # 46004570 funziona bene e tutto in VBA (senza librerie grafiche, ecc.) – perfo