[PS CC-CC2022] попиксельно брать цвет из таблиц Ms Excel

  • Автор темы Автор темы IVA2000
  • Дата начала Дата начала
Коллеги, большое вам спасибо! Я уже понял направление. Но не понял детали.

Исходник в экселе подгоню под нужный формат сам.

~RA~, будет ли уместно, если вы возьмете с меня денежку и покажете как действовать у меня на компьютере (Windows)?

Мне непонятно:
1) Как использовать конвертор ImageMagick и какой конкретно.
2) Как конвертировать понятный мне cielab(32.297, 79.1875, -107.86) в (82,207,20).
3) Что значат циферки "3,2,0" в строчке "3,2,0,65535,cielab"

мои координаты:
iva2000@gmail.com
8-926-427-25-25
 

Вложения

  • 2022-07-08_10-14-16.png
    2022-07-08_10-14-16.png
    115.7 КБ · Просм.: 156
Последнее редактирование:
~RA~, будет ли уместно, если вы возьмете с меня денежку и покажете как действовать у меня на компьютере (Windows)?
Можно и так, а пока бесплатно поотвечаю тут, вдруг этого окажется достаточно. ;)
1) Как использовать конвертор ImageMagick и какой конкретно.
3) Что значат циферки "3,2,0" в строчке "3,2,0,65535,cielab"
3,2 — размер изображения в пикселах. 0 — в вашем случае просто укажите и не забивайте голову. По-моему этот параметр и вовсе можно не передавать.

2) Как конвертировать понятный мне cielab(32.297, 79.1875, -107.86) в (82,207,20).
Я уверен, вы способны нагуглить ответ или додуматься до него самостоятельно. ;)

А почему вы проигнорировали мой вопрос
когда я предлагал написать для вас готовое решение?

PS. Ребус с картинки я не разгадал.
 
Последнее редактирование:
когда я предлагал написать для вас готовое решение?
Это не вопрос, это ребус... Возможно "How money?" но расшифровывать такое HZ я бы не рискнул.

p.s. если что можно стукнуться в скайп по нику, может что-нить подскажу на выходных.
 
Последнее редактирование:
Это не вопрос, это ребус... Возможно "How money?"
Прошу прощения, видимо я научился плохому да, к тому же, очевидно не распознаваемому в русскоязычном сообществе.
Я имел ввиду "сколько вы готовы заплатить".
 
~RA~, я вам благодарен за подсказку.
Я так и не догадался как конвертировать cielab(32.297, 79.1875, -107.86) в (82,207,20).
И ImageMagick не запускается, только просмотровщик IMDisplay. Вероятно ImageMagick - консольное приложение, а я умею использовать только приложения, которые вызываются кнопками.
И тем не менее, если не смогу решить иными способами задачу, вернусь изучать ImageMagick.
Про деньги вопрос сложный, для всех деньги разные. Мне комфортно перевести вам за уже оказанную помощь 2500р. Это взятая с потолка сумма, которую не жалко, но вроде и не совсем стыдно.
Если вы пришлете номер телефона или карточки, я переведу на Сбер или Тинькофф, или иной указанный вами банк.
_
splxgf, Мне нужна ваша помощь, буду благодарен, если вы подскажете. У меня трудности с запуском скайпа. Эта программа меня не слушается, когда-то я ее удалил, а теперь поставил снова, а она даже не открывается. Может быть Zoom, Яндекс.телемост, Whatsapp или что-то аналогичное? Мне нужно понять как конкретно записывать фотошоп raw. И как перекопировывать каналы R->L, G->a, B->b. Должно быть просто, если знать последовательность действий.
Весь день сегодня буду в дороге, но вечером и завтра у компьютера.
 
И как перекопировывать каналы R->L, G->a, B->b. Должно быть просто, если знать последовательность действий.
Действительно, все настолько просто, что даже не пойму, как такая проблема непонимания могла возникнуть. Выделяете во вкладке Channels нужный канвл исходного RAW, Select All, Copy, выделяете нужный Lab канал, Paste
Единственно что - вам нужно во время экспорта в макросе правильно преобразовать ваше значение в восьмибитное целое
 
Действительно, все настолько просто, что даже не пойму, как такая проблема непонимания могла возникнуть. Выделяете во вкладке Channels нужный канвл исходного RAW, Select All, Copy, выделяете нужный Lab канал, Paste
Единственно что - вам нужно во время экспорта в макросе правильно преобразовать ваше значение в восьмибитное целое
split channels, потом merge сразу в Lab
 
  • Спасибо
Реакции: splxgf, ~RA~ и _MBK_
Вероятно ImageMagick - консольное приложение, а я умею использовать только приложения, которые вызываются кнопками.
Так и есть.
Для запуска на винде нужно открыть командную строку написать путь к исполняемому файлу, потом к файлу txt, потом к файлу назначения.
Для nix систем с добавленным в path исполняемым файлом это выглядит так.
На винде будет как-то так.
convert.exe lab.txt lab.tif
Если совсем не выйдет, могу подключиться удалённо, настроить и показать как пользоваться.
 
split channels, потом merge сразу в Lab
Можно и так, чуть более технологично, но и более ***.
Я так и не догадался как конвертировать cielab(32.297, 79.1875, -107.86) в (82,207,20).
Ну к примеру яркость изменяется от 0 до 100, а кодировать нужно байтом, это диапазон 0..255
L = 32.297*255/100
координаты a,b имеют размерность -128..127
поэтому
a = 79.1875 + 128
Ну и немного повозиться с округлением (но чтобы не выйти за пределы диапазона 0..255) или отбрасыванием дробной части... или можете уйти в 16 бит на канал если захочется пострадать перфекционизмом.
 
Последнее редактирование модератором:
  • Спасибо
Реакции: ~RA~
Если распрямить руки и не отвлекаться, то всё хорошо.
Код:
sh-3.2# magick xc:'cielab(0,-128, -128)' -depth 8 -colorspace LAB txt:
# ImageMagick pixel enumeration: 1,1,0,255,cielab
0,0: (0,0,0)  #000000  cielab(0,-127.5,-127.5)
sh-3.2# magick xc:'cielab(50, 0, 0)' -depth 8 -colorspace LAB txt:
# ImageMagick pixel enumeration: 1,1,0,255,cielab
0,0: (128,128,128)  #808080  cielab(50.1961,0.5,0.5)
sh-3.2# magick xc:'cielab(100, 127, 127)' -depth 8 -colorspace LAB txt:
# ImageMagick pixel enumeration: 1,1,0,255,cielab
0,0: (255,255,255)  #FFFFFF  cielab(100,127.5,127.5)
 
Последнее редактирование модератором:
с ячеек листа MS Exsel
заполнить картинку 1000×1000 пикселей
Кстати, а что за маньяк будет заполнять эти ячейки? Потому что иначе, смысла использовать Exsel не вижу... ну от слова совсем. Зачем он в этой цепи?
 
  • Спасибо
Реакции: ~RA~
Какое нибудь профилирование, вероятно?
 
Кстати, а что за маньяк будет заполнять эти ячейки? Потому что иначе, смысла использовать Exsel не вижу... ну от слова совсем. Зачем он в этой цепи?
Сейчас в конце 2-ой страницы выяснится, что тс в екселе генерит с каким-нибудь шагом просто. Хотя, лаб сильно нелинеен и дело это дурное.
 
Да, будет реально смешно, если ктото просто выбрал экселовский VBA для генерации изображения, как самый доступный для себя инструмент ;)
 
Да, будет реально смешно, если ктото просто выбрал экселовский VBA для генерации изображения, как самый доступный для себя инструмент
А что не так с экселем? очень удобная суперхренорезка.
1657440787822.png

Скрипт для записи raw-lab-файла из квадратной таблицы со значениями.
Код:
Sub SaveRAW()
Dim Lv, av, bv As Long

' Скрипт работает с текущей открытой книгой, должно существовать три листа с именами
' L, a, b: ожидаемые значения L 0..100; a,b -128..127

' Начальная ячейка диапазона
startrange = "b2"

' Путь для сохранения
basepath = "c:\2\"   ' слеш в конце обязателен.

' Имя файла, к имени автоматически добавляется размер и номер последовательности
Filename = "color"
sufix = 0


Set L = ActiveWorkbook.Sheets("L")
Set a = ActiveWorkbook.Sheets("a")
Set b = ActiveWorkbook.Sheets("b")

fullrange = L.Range(startrange).CurrentRegion.Address
workrange = startrange + Mid(fullrange, InStr(fullrange, ":"))

cols = L.Range(workrange).Columns.Count
Lines = L.Range(workrange).Rows.Count


For i = 1 To 10000
    fullpath = basepath + Filename + "_" + Trim(cols) + "x" + Trim(Lines) + "-" + Trim(sufix) + ".raw"
    If Dir(fullpath) <> "" Then
        sufix = sufix + 1
    Else
        Exit For
    End If
Next i

Open fullpath For Binary Access Write As #1

For y = 1 To Lines
For x = 1 To cols

dy = Range(startrange).Row + y - 1
dx = Range(startrange).Column + x - 1
Lv = 65535 * L.Cells(dy, dx) / 100
Call WriteV(Lv, x, y)
av = 65535 * (a.Cells(dy, dx) + 128) / (128 + 127)
Call WriteV(av, x, y)
bv = 65535 * (b.Cells(dy, dx) + 128) / (128 + 127)
Call WriteV(bv, x, y)

Next x
Next y

Close #1
End Sub

Sub WriteV(value, x, y)
    Dim HiBit, LoBit As Byte
    If value > 65535 Or value < 0 Then
        Debug.Print x, y, value
    End If
    HiBit = value \ 256
    LoBit = value Mod 256
    Put #1, , CByte(LoBit)
    Put #1, , CByte(HiBit)
End Sub
 
  • Спасибо
Реакции: ~RA~
  • Спасибо
Реакции: ~RA~
Дорогие товарищи!
Вы совершенно правы. Я в Excel рисую картинки. Цвет на картинках должен быть верным, чтобы можно было сравнивать цвета разных участков картинки. И при наличии калиброванного монитора надеяться, что и абсолютная величина цвета примерно соответствует реальности.
Поэтому я рассчитываю эти картинки в LAB попиксельно, а затем открываю их в фотошопе.

Задачу решил splxgf. Его скрипт выгружает данные из Excel в картинку. Затем картинку надо открыть в фотошопе и путем вышеописанных манипуляций превратить в Lab. Пипеткой проверяется, что цвета действительно те, что в таблице Excel.

Выражаю благодарность ~RA~. Благодаря ~RA~ стало ясно, что задача в принципе решается. Только отсутствие у меня IT-квалификации и боязнь командной строки не позволила освоить ImageMagick. Без конструктивного участия ~RA~ проект мог бы не реализоваться. Я обещал 2500р, и переведу как только ~RA~ скажет куда. Если не скажет в течении недели, деньги уйдут на другие цели.
 
  • Спасибо
Реакции: ~RA~
Дорогие товарищи!
Вы совершенно правы. Я в Excel рисую картинки. Цвет на картинках должен быть верным, чтобы можно было сравнивать цвета разных участков картинки. И при наличии калиброванного монитора надеяться, что и абсолютная величина цвета примерно соответствует реальности.
Поэтому я рассчитываю эти картинки в LAB попиксельно, а затем открываю их в фотошопе.

Задачу решил splxgf. Его скрипт выгружает данные из Excel в картинку. Затем картинку надо открыть в фотошопе и путем вышеописанных манипуляций превратить в Lab. Пипеткой проверяется, что цвета действительно те, что в таблице Excel.

Выражаю благодарность ~RA~. Благодаря ~RA~ стало ясно, что задача в принципе решается. Только отсутствие у меня IT-квалификации и боязнь командной строки не позволила освоить ImageMagick. Без конструктивного участия ~RA~ проект мог бы не реализоваться. Я обещал 2500р, и переведу как только ~RA~ скажет куда. Если не скажет в течении недели, деньги уйдут на другие цели.
Вы чертовски неудачный инструмент выбрали. То же самое ж можно делать не выходя из фотошопа. Не хотите разбираться с JS, так там и бейсик есть