Правильно ли я понимаю, что ему страницы в ответ на get($_) не отдают? Или там раньше проблема начинается?
И что вообще делать?
В последние годы в кругах, причастных цифровой гуманиоре, популярны работы Льва Мановича [см. http://manovich.net/ ], придумавшего и пропагандирующего интересные формы работы с большими массивами изображений. Обычно, как я понял, он получает эти массивы по API из Instagram или аналогичных источников, потом создает базы изображений и сопутствующих метаданных и строит умопомрачительной красоты визуализации.
Часто говорят о том, что он работает с изображениями в «нередуцированном» виде. Из чтения его работ я не понял, что имеется в виду под нередуцированным видом, потому что вся умопомрачительная графика строится на том, что из графического файла извлекаются весьма немногие суммарные характеристики (обычно усредненная яркость, контрастность и время создания), после чего вся коллекция располагается в осях этих переменных. Отдельные изображения, в зависимости от размеров графика и количества изображений, могут репрезентировать точки, покрашенные в усредненный по изображению цвет, или уменьшенные / неуменьшенные копии изображений, играющие роль все тех же точек на графике, но краше.
Сам Манович предлагает использовать для работы специально созданный им программный продукт, который состоит из надстройки над Jimage. Немного подумав, я решил, что нет ничего запредельно сложного, в том, чтобы добиться того же иными средствами, не отходя далеко от R (в работе с R я вижу два плюса -- возможность создания скриптов, позволяющих воспроизводить преобразования данных, расчеты и графики, и бесконечный аналитический потенциал). При такой простоте подхода к презентации данных, ключевой вопрос был, как понятно, в том, чтобы как-то получить эти самые данные об изображениях (потому что, получив их, нарисовать типичный график несложно). Я не рассматриваю здесь вопрос о сборе метаданных (авторы, комментарии, геопозиция, количество лайков и т. п.) и получении изображений как таковых. Они лежат в несколько иной плоскости (роботы-фетчеры и API), меня интересуют вопросы об анализу уже наличных коллекций.
Если изображения уже имеются в вашем распоряжении, добыть данные об их параметрах гораздо проще, чем может показаться на первый взгляд. Помимо GUI редакторов для графики, как известно, есть довольно мощные инструменты для работы с графикой из командной строки. Я использую в таких случаях ImageMagick (да нагуглится имя его). В его состав, среди многого прочего, входит утилита identify
, которая возвращает от просмотренных ею файлов довольно изрядный список параметров. Если не указано иное, то возвращает она его на стандартное устройство вывода (экран), но можно указать иное и направить весь этот поток текста в файл. Вот несколько сокращенный real-life пример данных по одному из моих файлов (фото, сделанное цифровым фотоаппаратом).
Как нетрудно догадаться, можно заставить собрать эту информацию от всех файлов, находящихся в определенном месте. Для меня это были все подпапки в одной из папок фотоархива. Для этого пришлось написать такой простенький скрипт:
Файл imagedata.sh:
#!/bin/bash shopt -s globstar for img in **/*.JPG; do identify "$img" -verbose >> imagedata.raw.txt done
Скрипт жужжал больше часу, собрал 60+ МБ всей этой словесно-цифирной шелухи из 7+ тыс. файлов (скромно, в общем, но я мало снимаю в последние годы). Пришла пора достать оттуда то, что нужно (умные люди могут делать это на лету, думаю, и я, попыхтев немного с sed, смог бы, но пыхтеть не хотелось и я пошел по пути наименьшего сопротивления, написав [опять-таки, по мнению знатоков, наверняка избыточный] скрипт на perl). Доставать я собирался время создания, параметры каналов RGB (mean и standard deviation) и суммарные характеристики изображения, которые могут сойти за меры общей яркости и общей контрастности Overall / mean и Overall / standard deviation.
( скрипт тоже под cut... )После чего у меня образовался небольшой файлик на 1.2 МБ, который уже можно было загружать в R. После загрузки удалось нарисовать несколько картинок примерно настолько же осмысленных, как и картинки автора идеи. Самая большая возня была, как это ни смешно, с осью времени (я редко работаю со временем в таком формате), но все как-то утряслось. Их можно допиливать и дальше (например, теоретически возможен вариант с использованием сильно уменьшенных изображений в качестве точек на графиках), но это уже не принципиально.
Вот -- коллекция, развернутая в осях: яркость / контрастность:
Вот, в порядке нарастания детализации, временные ленты для яркости...:
...и контрастности:
Сегодня мы так и не добрались до сути, но для тех, кто потерял надежду, попытаюсь на маленьком примере объяснить, зачем бывает нужен Perl. Вот у нас есть данные, в которых даты записаны так:
( простой скрипт и его истолкование... )P. S. 2/290/-74/216.
Поможите, чем можете! Не могу понять, как вычистить неразрывный пробел из более, чем трехзначных чисел.
s/(?<=\d)ЧТОВПИСАТЬСЮДА?(?=\d\d\d)//g;
В качестве кандидатов уже побывали "\x0xA0", "\xA0", "\x0xC2", "\xC2". Я понимаю, что чего-то не понимаю, но это само по себе не помогает. Все эти долбанные cookbookи и учебники написаны, похоже, какими-то людьми, которые уже все знают, поэтому они общаются с простыми смертными, вроде меня, языком полупонятных намеков.