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

  • Автор темы Автор темы serzin
  • Дата начала Дата начала
Вот просто, оставаясь в рамках чисто колориметрической темы цветовых профилей и всего такого прочего.
Консорциум ICC разработал прекрасную утилиту ICCMax, все колористы так или иначе пользуются, позволяет заглянуть внутрь профиля почти как к себе домой, распаковать профиль, запаковать расчеты в профиль.
Обычный набор утилит для вызова из командной строки с ключами, с указанием имен файлов на входе и выходе. Очень удобно. И этот джентльменский набор колориста был ICC скомпилирован под разные операционки, в результате всем профит: я целиком и полностью считаю цветовой профиль icc что RGB что CMYK на клиентском компьютере, не на сервере, задействуя мощности клиентского процессора (а их, этих мощностей, требуется не мало для многомерных сплайновых интерполяций), и лишь крохотную не тяжелую операцию упаковки всех расчетов в заданный формат icc произвожу с помощью ICCMax на сервере. Даже не принуждая пользователя ставить себе ICCMax. Но с ICCMax история очевидна: яваскрипт трудно заставить писать файлы на клиентский комп, и ICCMax не переведен на яваскрипт. Но так как скопмпилирован ICCMax подо все на свете - нетрудно прикрутить ICCMax к яваскрипту при помощи пары строк на PHP на линуксовом сервере. С помощью простой команды exec. Exec и ICCMax ничего не пишeт в консоль, но в секунду упаковывают предоставленный яваскриптом XML в файл формата ICC, и php отдает пользователю этот файл готового профиля icc.
Для нетяжелых задач можно так сервер задействовать. Для тяжелых расчетов я предпочитаю задействовать клиентский компьютер.
Обсуждаемая утилита, конечно не строит профиль, как заявлено в теме, но предоставляет данные для построения профиля в другом софте. Дельты Е классные, надо допиливать до удобного применения.
 
яваскрипт трудно заставить писать файлы на клиентский комп
Лучше сказать, что невозможно заставить яваскрипт писать файлы на клиентский комп, жесткие ограничения безопасности. Кукисы как исключение. Но взаимодействие с текстовыми форматами CGATS колориметрических данных в спектрах через интерфейс и копипаст - в принципе удобно. Все что нужно кроме браузера - простой текстовый блокнот под Win или Mac для колориметрических файлов txt.
 
Последнее редактирование:
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
JavaScript:
download('test.txt', 'Hello world!');
Да, txt опасный исполняемый файл, записанный на компе клиента без его ведома!-)
Спасибо за подсказку!-)
Это все упрощает, записать txt чуть проще, чем icc, по идее так достаточно просто клиентского сценария записать конечный CGATS сразу в файл при необходимости. Подгружать табличку на входе придется все равно через буфер обмена, если ~RA~ не покажет еще какой-то трюк, где яваскрипт обращается к клиентскому файлу txt на жестком диске с колориметрическими данными.
 
Последнее редактирование:
Согласен. Но решение засчитано тем не менее. Может быть полезно не нагружать сервер в простых случаях.
Решения подгрузки своего файла в клиентский яваскрипт на сколько я понимаю точно нет минуя сервер и POST запрос к серверу.
 
Последнее редактирование:
Так, как мы отправляем файлы на сервер по нажатию Submit, чтобы потом отдать их сервером клиентскому яваскрипту.
Выбрать файл на компьютере, отправить, данные файла использовать в яваскрипте.
 
Последнее редактирование:
Просто как отправить по Submit себе данные в скрипт через сервер - я понимаю. Но на сколько я знаю - я не могу сделать то же самое, минуя сервер. Посмотрю на window.showOpenFilePicker()
 

Вложения

  • Submit.png
    Submit.png
    498.3 КБ · Просм.: 108
Не, не буду пробовать:
 

Вложения

  • fp.png
    fp.png
    255.2 КБ · Просм.: 145
Интересно как насчитали эти 34 %.
1676642962994.png
 
Ну да 2 из 5 получается 40% а не 34%.
Если все браузеры не понимают - значит не применимо.
Я юзаю в скриптах только то, что давно и однозначно поддерживается всеми браузерами. Поэтому все работает даже на айфоне. Для прикола даже профиль icc считал на айфоне: а что, быстро оказалось, процессор там нехилый. Разве что все лень и жаль везде флеш повыкидывать, но у меня изначально была замена флешу прописана везде, если флеш недоступен.
 
Переводной вариант на клиентский яваскрипт с графическим интерфейсом, когда прога лежит на сервере автора, но выполняется в клиентском браузере и не нагружает сервер.
Михаил, а почему вы не хотите нагружать сервер? Я даже могу предположить, что этот сервер у вас дома, все равно это специфическая задача и не будет даже десятков запросов в день.
Я к чему это. У провайдеров хорошие сервера. Я реализовывал скрипт, который при запросе через Telegram выполнялся у Гугла (яваскрипт). Гугл просто бесплатно дает ограниченное количество подобных выполнений в день. Но если бы я перешел этот предел в десятки раз, то могу сказать с уверенностью — я был бы очень популярный (и богатый) человек, чтобы использовать отдельный сервак )). API большинство сервисов очень дружелюбно по отношению к друг другу.
Можно даже через телеграм делать загрузку файлов, привязать токен к своему сайту и обрабатывать файл там хоть через php, хоть через питон или яваскрипт(node). Диалог легко организуется через телеграм бот.
 
Михаил, а почему вы не хотите нагружать сервер? Я даже могу предположить, что этот сервер у вас дома
Нет, сервер в стойке и не дома. У меня и так на том сервере самая высокая популярность из хостеров, самый высокий трафик, и самая высокая нагрузка на процессор. Это при том, что я считаю на сервере по минимуму и стараюсь как-то застраховаться от атак всякими задержками, проверкой обращений к скрипту, от кого исходит: если от моего приложения - сервер обработает запрос, если не от моего - отправит пользователя в мое приложение, а запрос не обработает.
Но помаленьку нагружаю конечно сервер, вот такие картинки по запросу чисто 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 КБ · Просм.: 104
  • Spectralcalc_PNG_image_2023_02_17_18_03_39_PM.png
    Spectralcalc_PNG_image_2023_02_17_18_03_39_PM.png
    721.4 КБ · Просм.: 107
  • Spectralcalc_PNG_image_2023_02_17_18_04_19_PM.png
    Spectralcalc_PNG_image_2023_02_17_18_04_19_PM.png
    38.9 КБ · Просм.: 105

Вот такие вещи с соревнованием ядер процессора при построении icc-профиля я не хочу на сервер возлагать, чтобы он не тормозил. А на клиентском компе - пускай пашет клиентский процессор, мне ему достаточно отдать всего несколько сотен килобайт скриптов для этого, которые еще и кешируются, чтобы не жрать лишний трафик.
Вы наверное видели, как долго на слабой машине считают профили Argyll, XRite и Gretag, ColorLogic, быстрее всех Heidelberg, но тоже требует время и ресурсов. Ну и у меня аналогичная математика тяжелая. Иксрайт же не предоставляет возможности посчитать профиль icc на его серваке по подписке. Какие-то такие соображения: пускай клиентский процессор трудится.
Грэм может разместить утилиты Argyll на любом сервере и предоставить к ним доступ для построения профиля онлайн и в удобном интерфейсе браузера все той же командой exec, но он этого не делает.
 
Попробовал позапускать утилиту на гугловском colab - мне понравилось. Подставил для теста другой шаблон на 800 полей - работает! Мне кажется надо еще приделать обработку входящих шкал в произвольном (ином) порядке расположения патчей - и полный фарш. Мне сложно на питоне, но может на яваскрипте напишу крохотный конвертер, который будет просто упорядочивать любую шкалу с нужными полями в формат заданной на 52 поля.
Утилита супер, у меня всего одна мысль по улучшению - отвязать ее от строгого порядка расположения нужных 52 патчей на шкале, но это рюшечки и бантики и не обязательно.
 

Вложения

  • Screenshot 2023-03-03 192452.png
    Screenshot 2023-03-03 192452.png
    390.1 КБ · Просм.: 103
  • Spectralcalc_PNG_image_2023_03_03_19_34_39_PM.png
    Spectralcalc_PNG_image_2023_03_03_19_34_39_PM.png
    207.7 КБ · Просм.: 112
  • sRGB_colortable_2023_03_03_19_34_36_PM.png
    sRGB_colortable_2023_03_03_19_34_36_PM.png
    14.9 КБ · Просм.: 106
  • Spectralcalc_PNG_image_2023_03_03_19_40_22_PM.png
    Spectralcalc_PNG_image_2023_03_03_19_40_22_PM.png
    933.8 КБ · Просм.: 107
Написать код, который будет дергать из большой шкалы нужные 52 поля(если они там есть), нет никаких проблем. Вопрос зачем?:) Фишка же именно в том, чтобы строить профиль по маленькой шкале. Если уже есть большая, то можно строить профиль по ней.:)
 
  • Спасибо
Реакции: mihas