Построение профилей по небольшому количеству измерений

mihas

15 лет на форуме
Сообщения
4 860
Реакции
2 872
Вот просто, оставаясь в рамках чисто колориметрической темы цветовых профилей и всего такого прочего.
Консорциум ICC разработал прекрасную утилиту ICCMax, все колористы так или иначе пользуются, позволяет заглянуть внутрь профиля почти как к себе домой, распаковать профиль, запаковать расчеты в профиль.
Обычный набор утилит для вызова из командной строки с ключами, с указанием имен файлов на входе и выходе. Очень удобно. И этот джентльменский набор колориста был ICC скомпилирован под разные операционки, в результате всем профит: я целиком и полностью считаю цветовой профиль icc что RGB что CMYK на клиентском компьютере, не на сервере, задействуя мощности клиентского процессора (а их, этих мощностей, требуется не мало для многомерных сплайновых интерполяций), и лишь крохотную не тяжелую операцию упаковки всех расчетов в заданный формат icc произвожу с помощью ICCMax на сервере. Даже не принуждая пользователя ставить себе ICCMax. Но с ICCMax история очевидна: яваскрипт трудно заставить писать файлы на клиентский комп, и ICCMax не переведен на яваскрипт. Но так как скопмпилирован ICCMax подо все на свете - нетрудно прикрутить ICCMax к яваскрипту при помощи пары строк на PHP на линуксовом сервере. С помощью простой команды exec. Exec и ICCMax ничего не пишeт в консоль, но в секунду упаковывают предоставленный яваскриптом XML в файл формата ICC, и php отдает пользователю этот файл готового профиля icc.
Для нетяжелых задач можно так сервер задействовать. Для тяжелых расчетов я предпочитаю задействовать клиентский компьютер.
Обсуждаемая утилита, конечно не строит профиль, как заявлено в теме, но предоставляет данные для построения профиля в другом софте. Дельты Е классные, надо допиливать до удобного применения.
 

mihas

15 лет на форуме
Сообщения
4 860
Реакции
2 872
яваскрипт трудно заставить писать файлы на клиентский комп
Лучше сказать, что невозможно заставить яваскрипт писать файлы на клиентский комп, жесткие ограничения безопасности. Кукисы как исключение. Но взаимодействие с текстовыми форматами CGATS колориметрических данных в спектрах через интерфейс и копипаст - в принципе удобно. Все что нужно кроме браузера - простой текстовый блокнот под Win или Mac для колориметрических файлов txt.
 
Последнее редактирование:

~RA~

Одарённая.
12 лет на форуме
Сообщения
11 950
Реакции
3 471
JavaScript:
function download(filename, text) {
    var pom = document.createElement('a');
    pom.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
    pom.setAttribute('download', filename);

    if (document.createEvent) {
        var event = document.createEvent('MouseEvents');
        event.initEvent('click', true, true);
        pom.dispatchEvent(event);
    }
    else {
        pom.click();
    }
}
JavaScript:
download('test.txt', 'Hello world!');
 
Последнее редактирование:
  • Спасибо
Реакции: mihas

mihas

15 лет на форуме
Сообщения
4 860
Реакции
2 872
JavaScript:
download('test.txt', 'Hello world!');
Да, txt опасный исполняемый файл, записанный на компе клиента без его ведома!-)
Спасибо за подсказку!-)
Это все упрощает, записать txt чуть проще, чем icc, по идее так достаточно просто клиентского сценария записать конечный CGATS сразу в файл при необходимости. Подгружать табличку на входе придется все равно через буфер обмена, если ~RA~ не покажет еще какой-то трюк, где яваскрипт обращается к клиентскому файлу txt на жестком диске с колориметрическими данными.
 
Последнее редактирование:

mihas

15 лет на форуме
Сообщения
4 860
Реакции
2 872
Согласен. Но решение засчитано тем не менее. Может быть полезно не нагружать сервер в простых случаях.
Решения подгрузки своего файла в клиентский яваскрипт на сколько я понимаю точно нет минуя сервер и POST запрос к серверу.
 
Последнее редактирование:

mihas

15 лет на форуме
Сообщения
4 860
Реакции
2 872
Так, как мы отправляем файлы на сервер по нажатию Submit, чтобы потом отдать их сервером клиентскому яваскрипту.
Выбрать файл на компьютере, отправить, данные файла использовать в яваскрипте.
 

~RA~

Одарённая.
12 лет на форуме
Сообщения
11 950
Реакции
3 471
Последнее редактирование:

mihas

15 лет на форуме
Сообщения
4 860
Реакции
2 872
Просто как отправить по Submit себе данные в скрипт через сервер - я понимаю. Но на сколько я знаю - я не могу сделать то же самое, минуя сервер. Посмотрю на window.showOpenFilePicker()
 

Вложения

  • Submit.png
    Submit.png
    498.3 КБ · Просм.: 91

mihas

15 лет на форуме
Сообщения
4 860
Реакции
2 872
Не, не буду пробовать:
 

Вложения

  • fp.png
    fp.png
    255.2 КБ · Просм.: 123

~RA~

Одарённая.
12 лет на форуме
Сообщения
11 950
Реакции
3 471
Интересно как насчитали эти 34 %.
1676642962994.png
 

mihas

15 лет на форуме
Сообщения
4 860
Реакции
2 872
Ну да 2 из 5 получается 40% а не 34%.
Если все браузеры не понимают - значит не применимо.
Я юзаю в скриптах только то, что давно и однозначно поддерживается всеми браузерами. Поэтому все работает даже на айфоне. Для прикола даже профиль icc считал на айфоне: а что, быстро оказалось, процессор там нехилый. Разве что все лень и жаль везде флеш повыкидывать, но у меня изначально была замена флешу прописана везде, если флеш недоступен.
 

eugeny

15 лет на форуме
Сообщения
859
Реакции
210
Переводной вариант на клиентский яваскрипт с графическим интерфейсом, когда прога лежит на сервере автора, но выполняется в клиентском браузере и не нагружает сервер.
Михаил, а почему вы не хотите нагружать сервер? Я даже могу предположить, что этот сервер у вас дома, все равно это специфическая задача и не будет даже десятков запросов в день.
Я к чему это. У провайдеров хорошие сервера. Я реализовывал скрипт, который при запросе через Telegram выполнялся у Гугла (яваскрипт). Гугл просто бесплатно дает ограниченное количество подобных выполнений в день. Но если бы я перешел этот предел в десятки раз, то могу сказать с уверенностью — я был бы очень популярный (и богатый) человек, чтобы использовать отдельный сервак )). API большинство сервисов очень дружелюбно по отношению к друг другу.
Можно даже через телеграм делать загрузку файлов, привязать токен к своему сайту и обрабатывать файл там хоть через php, хоть через питон или яваскрипт(node). Диалог легко организуется через телеграм бот.
 

mihas

15 лет на форуме
Сообщения
4 860
Реакции
2 872
Михаил, а почему вы не хотите нагружать сервер? Я даже могу предположить, что этот сервер у вас дома
Нет, сервер в стойке и не дома. У меня и так на том сервере самая высокая популярность из хостеров, самый высокий трафик, и самая высокая нагрузка на процессор. Это при том, что я считаю на сервере по минимуму и стараюсь как-то застраховаться от атак всякими задержками, проверкой обращений к скрипту, от кого исходит: если от моего приложения - сервер обработает запрос, если не от моего - отправит пользователя в мое приложение, а запрос не обработает.
Но помаленьку нагружаю конечно сервер, вот такие картинки по запросу чисто php рисует по предоставленным данным, на яваскрипте такие файлики рисовать будет сильно посложнее.
Но и тяжелые расчеты, которые у i9 процессора 11 поколения занимают в сумме не менее минуты, я конечно на сервер не возлагаю.
 

Вложения

  • Spectralcalc_PNG_image_2023_02_17_18_03_09_PM.png
    Spectralcalc_PNG_image_2023_02_17_18_03_09_PM.png
    122.6 КБ · Просм.: 84
  • Spectralcalc_PNG_image_2023_02_17_18_03_39_PM.png
    Spectralcalc_PNG_image_2023_02_17_18_03_39_PM.png
    721.4 КБ · Просм.: 91
  • Spectralcalc_PNG_image_2023_02_17_18_04_19_PM.png
    Spectralcalc_PNG_image_2023_02_17_18_04_19_PM.png
    38.9 КБ · Просм.: 85

mihas

15 лет на форуме
Сообщения
4 860
Реакции
2 872
Вот такие вещи с соревнованием ядер процессора при построении icc-профиля я не хочу на сервер возлагать, чтобы он не тормозил. А на клиентском компе - пускай пашет клиентский процессор, мне ему достаточно отдать всего несколько сотен килобайт скриптов для этого, которые еще и кешируются, чтобы не жрать лишний трафик.
Вы наверное видели, как долго на слабой машине считают профили Argyll, XRite и Gretag, ColorLogic, быстрее всех Heidelberg, но тоже требует время и ресурсов. Ну и у меня аналогичная математика тяжелая. Иксрайт же не предоставляет возможности посчитать профиль icc на его серваке по подписке. Какие-то такие соображения: пускай клиентский процессор трудится.
Грэм может разместить утилиты Argyll на любом сервере и предоставить к ним доступ для построения профиля онлайн и в удобном интерфейсе браузера все той же командой exec, но он этого не делает.
 

mihas

15 лет на форуме
Сообщения
4 860
Реакции
2 872
Попробовал позапускать утилиту на гугловском colab - мне понравилось. Подставил для теста другой шаблон на 800 полей - работает! Мне кажется надо еще приделать обработку входящих шкал в произвольном (ином) порядке расположения патчей - и полный фарш. Мне сложно на питоне, но может на яваскрипте напишу крохотный конвертер, который будет просто упорядочивать любую шкалу с нужными полями в формат заданной на 52 поля.
Утилита супер, у меня всего одна мысль по улучшению - отвязать ее от строгого порядка расположения нужных 52 патчей на шкале, но это рюшечки и бантики и не обязательно.
 

Вложения

  • Screenshot 2023-03-03 192452.png
    Screenshot 2023-03-03 192452.png
    390.1 КБ · Просм.: 82
  • Spectralcalc_PNG_image_2023_03_03_19_34_39_PM.png
    Spectralcalc_PNG_image_2023_03_03_19_34_39_PM.png
    207.7 КБ · Просм.: 93
  • sRGB_colortable_2023_03_03_19_34_36_PM.png
    sRGB_colortable_2023_03_03_19_34_36_PM.png
    14.9 КБ · Просм.: 86
  • Spectralcalc_PNG_image_2023_03_03_19_40_22_PM.png
    Spectralcalc_PNG_image_2023_03_03_19_40_22_PM.png
    933.8 КБ · Просм.: 88

serzin

Топикстартер
20 лет на форуме
Сообщения
988
Реакции
283
Написать код, который будет дергать из большой шкалы нужные 52 поля(если они там есть), нет никаких проблем. Вопрос зачем?:) Фишка же именно в том, чтобы строить профиль по маленькой шкале. Если уже есть большая, то можно строить профиль по ней.:)
 
  • Спасибо
Реакции: mihas