Как преобразовать десятичное в шестнадцатеричное в схеме? (Нужно конвертировать RGB в HEX в GIMP) - PullRequest
1 голос
/ 01 ноября 2019

Как преобразовать десятичное в шестнадцатеричное в схеме?

Необходимо преобразовать RGB в HEX в GIMP для JSON после:

(set! imgcolor (car (gimp-color-picker image newDraw 1 1 TRUE TRUE 1)))

в Script-fu. Результат теперь в RGB, как: (255 255 255)

1 Ответ

0 голосов
/ 01 ноября 2019

Найти ответ в pallete-export.scm Автор Барак Иткин

; For all the operations below, this is the order of respectable digits:
(define conversion-digits (list "0" "1" "2" "3" "4" "5" "6" "7" "8" "9"
                                "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k"
                "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v"
                "w" "x" "y" "z"))


; Converts a decimal number to another base. The returned number is a string
(define (convert-decimal-to-base num base)
  (if (< num base) 
    (list-ref conversion-digits num) 
    (let loop ((val num)
               (order (inexact->exact (truncate (/ (log num) 
                                                   (log base)))))
               (result ""))
      (let* ((power (expt base order))
             (digit (quotient val power)))
        (if (zero? order)
          (string-append result (list-ref conversion-digits digit)) 
          (loop (- val (* digit power))
                (pred order)
                (string-append result (list-ref conversion-digits digit))))))))


; Convert a color to a hexadecimal string
; '(255 255 255) => "#ffffff"
(define (color-rgb-to-hexa-decimal color)
  (string-append "#"
                 (pre-pad-number
          (convert-decimal-to-base (car color) 16) 2 "0")
                 (pre-pad-number
          (convert-decimal-to-base (cadr color) 16) 2 "0")
                 (pre-pad-number
          (convert-decimal-to-base (caddr color) 16) 2 "0")
                 )
  )

; Присваеваем HEX переменной 
(set! imgcolorHEX (color-rgb-to-hexa-decimal imgcolor)) 
...