Вертикальный текст с jQuery

Я все еще пытаюсь придумать более быстрый / лучший метод, но думаю, что должно сработать следующее:

  • ограничить ваше изображение чистыми черными и белыми
  • генерировать и сохранять список всех черных пикселей на будущее
  • пометьте ваше изображение так, чтобы каждый белый шестиугольник был эффективно заполнен уникальным цветом (или оттенком серого) - некоторые люди называют это «маркировкой» [111 ] некоторые называют его «Blob Analysis» , некоторые называют его «Анализ связанных компонентов» . Как бы это ни называлось, вы получите что-то вроде этого:

enter image description here

  • Теперь посмотрите на каждый черный пиксель из перечислите, что вы сохранили на втором шаге, и посчитайте, сколько разных цветов, кроме черного, находятся в окружающей области 9x9 или 15x15. Если это три, это, вероятно, пересечение, как вы ищете.

Конечно, есть разные варианты - например, вы могли бы реализовать «минимальное расстояние от другого пересечения» сверху. Или «черная линия истончается первой» . Или расширение каждого шарика, чтобы размыть черные линии и сделать три цвета ближе друг к другу. Вы можете уменьшить свое изображение (стараясь использовать NEAREST_NEIGHBOUR вместо интерполяции) после маркировки, чтобы сократить время обработки - если это важно.

8
задан Joel 8 January 2010 в 22:22
поделиться

6 ответов

Давайте пойдем, играя в гольф!

$('#foo label').html($('#foo label').text().replace(/(.)/g,"$1<br />"));

Полностью непротестированный, но шаблон в regex похож на болвана.

26
ответ дан 5 December 2019 в 04:58
поделиться

Не протестированный, но это должно работать.

var element = $( '#foo label' );
var newData = '';
var data = element.text();
var length = data.length;
var i = 0;

while( i < length )
{

    newData += data.charAt( i ) + '<br />';
    i++;

}

element.html( newData );
3
ответ дан 5 December 2019 в 04:58
поделиться

Почему использование некоторое время циклично выполняется, когда можно использовать jQuery, встроенный каждый метод?

$.each( $('#foo').text(), function(){ $('#foo').append(this + '
'); } );

Там.Работает. Можно протестировать его.

0
ответ дан 5 December 2019 в 04:58
поделиться

Это основывается на ответе H Sebastian, но я протестировал его, и это работает

    var element = $( '#foo label' );
    var newData = '';
    var data = element.text();
    var length = data.length;
    var i = 0;
    $( '#foo label' ).html("");
    while( i < length )
    {
            $( '#foo label' ).append(data.charAt( i ) + "<br />")
            i++;
    }
1
ответ дан 5 December 2019 в 04:58
поделиться

Mr Kurt's answer works well for a single id, but if you want something more useful that can be applied to several elements try something like this:

$.each( $(".verticalText"), function () { $(this).html($(this).text().replace(/(.)/g, "$1
")) } );

Then just set class="verticalText" on the elements you want to be formatted like this.

And as a bonus it keeps the boob regex.

4
ответ дан 5 December 2019 в 04:58
поделиться

document.write ("вертикальный текст" .split (""). Join ("
"));

Изменить: Отверстие в одном!

3
ответ дан 5 December 2019 в 04:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: