Задать вопрос
  • Как склеить много изображений в ImageMagick с заданным шагом (отрицательным)?

    imhateb
    @imhateb Автор вопроса
    Moskus, так я ж не руками считать это положение хочу. Я к тому что convert +append делает почти то что нужно, но не совсем. Неужели там нет команды, чтобы каждому следующему файлу задавать нужное смещение? Я пробовал -smush, но видимо это тоже не то.
  • Браузер не может отрисовать очень большую таблицу. А нужно. Что делать?

    imhateb
    @imhateb Автор вопроса
    Сергей delphinpro, спасибо за совет. Но для меня это что-то новое в JS. Я к тому что раньше я писал только что-то, что нужно для элементарной вёрстки сайтов. Ну там корзину заказов мог сделать, калькулятор собрать, такое всё. А вот массивы данных, определения вьюпорта и т.д. - это для меня пока тяжело.

    Не могли бы Вы написать Ваш пример, чтобы он был применим к моей ситуации как есть?
    Я обещаю во всём разобраться и изучить вопрос. Но блин, карта эта нужна уже завтра. )) В выходные сражения. А я её делал как раз для разведки )))
  • Как склеить много изображений в ImageMagick с заданным шагом (отрицательным)?

    imhateb
    @imhateb Автор вопроса
    Эммм. Спасибо конечно. Но тут мы имеем дело с 30401 скриншотом. И делать описанное Вами будет весьма затруднительно в виду большого количества файлов. И как раз-таки со смещением и придётся морочиться, так как надо будет искать эти вертикальные ряды среди всех файлов, пронумерованных по горизонтали...

    Я думал, что ImageMagick'у под силу склеивать ряды со смещением по двум осям. Фиг с ним пусть хоть один такой диагональный ряд склеит. Я имею в виду типа convert +append только каждый файл немного левее и ниже.
  • Браузер не может отрисовать очень большую таблицу. А нужно. Что делать?

    imhateb
    @imhateb Автор вопроса
    dimoff66,
    Не нужно просить прощения, форум и существует для помощи. Вы не задаете никаких глупых вопросов.

    Спасибо что вы так написали. ) Я просто немного смущаюсь. Каждый раз боюсь, что мою просьбу о помощи сочтут наглостью, а меня посчитают лентяем, который "не умеет пользоваться гуглом".

    Опубликовал пример в ответах, посмотрите пожалуйста.

    Посмотрел. Опять-таки благодарю за то что Вы потратили своё время, чтобы помочь мне. Но я вчера так и не мог успокоиться, не решив эту задачу. Я не ел и не спал сутки )), хотелось победить её и успокоиться ))) Я перепробовал множество вариантов, но в результате всех этих мук я пришёл к тому, что таблица в любом её исполнении сильно тормозит без того тяжёлую страницу. Там ведь ещё цикл на добавление 30401 скриншота написан, он сам по себе долгий.

    В определённый момент я переключился на другую важную проблему - загрузку только видимых скриншотов, чтобы не грузить на страницу все 2Гб изображений. И несколько часов спустя, мне это вроде бы удалось. Посмотрите пожалуйста пример в действии - lss.format23.ru - теперь он не такой тяжёлый ))

    Однако, я подозреваю, что скрипт написанный мной далёк от идеала. Так, для определения видимой области происходит проверка по всем объектам, а их реально много. В результате страница может и грузится быстрее, но работает медленнее. Навигация по карте перетаскиванием стала затруднительным занятием (я использовал для этих целей плагин dragscroll.js). Но самое фиговое, что теперь страница перестала грузиться с мобильных устройств.

    Могу ли я попросить Вас посмотреть на мой код и подсказать, может его можно как-то оптимизировать?
    $(document).ready(function() {
    
    	// код добавления изображений
    	var coordX = 0,             // устанавливаем позицию для первого скрина (отступ слева)
    		coordY = 30300,         // отступ сверху
    		image = '0000',         // имя первого изображения		
    		gamecorX = 0,           // переменные для добавления к изображениям игровых координат (в атрибут title)
    		gamecorY = 1212,  		
    		map = $('<div/>');      // создаём div для добавления в него всех элементов
    
    		map.addClass('map');    // добавляем ему класс, чтобы он не был безымянным
    
    
    	// запускаем цикл для перебора всех изображений
    	for(var i = 0; i < 30400; i++){					
    		// так как имена файлов у нас в формате Image_0000 придётся заморочиться с ними
    		image = parseInt(image.replace(/\D+/g,"")); // переводим строку в число, чтобы отбросить лишние нули
    		image = image.toString();					// переводим число в строку, чтобы посчитать количество оставшихся символов.
    		var len = image.length;		                // считаем количество символов
    
    		if (len == 1) {image = '000'+image;}
    		if (len == 2) {image = '00'+image;}
    		if (len == 3) {image = '0'+image;}
    
    		// реализуем переход на следующий ряд (в одном ряду должно быть 301 изображение)
    		if (i % 301 == 0){
    			coordX = 0+600*(i/301);
    			coordY = 30300-300*(i/301);	
    			gamecorY = gamecorY-12;	
    			gamecorX = 0;
    		}
    
    		// добавляем изображение в div.map 
    		map.append('<img data-src="screens/Image_'+image+'.jpg" style="left: '+coordX+'px; top: '+coordY+'px;" alt="Please wait. I\'m will load soon. ;)" title="'+gamecorX+' : '+gamecorY+'">');
    		coordX = coordX+200;    // задаём смещение по оси Х
    		coordY = coordY+100;    // по оси Y
    		gamecorX = gamecorX+4;  // изменяем игровые координаты для title			
    
    		// снова заморачиваемся с именем файла
    		image = parseInt(image.replace(/\D+/g,"")); // переводим строку в число, чтобы можно было прибавить единицу
    		image = image+1;                            // +1
    		image = image.toString();					// переводим число в строку, чтобы подготовить к следующему циклу
    	}
    
    	$('body').append(map); // добавляем наш блок с картинками в body
    });
    
    
    // определяем область видимости
    $(document).scroll(function() {
    	function inWindow(s){
    		var scrollTop = $(window).scrollTop();
    		var scrollLeft = $(window).scrollLeft();
    		var windowHeight = $(window).height();
    		var windowWidth = $(window).width();
    		var currentEls = $(s);
    		var result = [];
    
    		currentEls.each(function(){			
    			var el = $(this);
    			var offset = el.offset();				
    			if (scrollTop-1000 <= offset.top && (el.height() + offset.top) < (scrollTop + windowHeight+1000) && scrollLeft-1000 <= offset.left && (el.width() + offset.left) < (scrollLeft + windowWidth+1000)) result.push(this);
    		});
    		return $(result);
    	}		
    	var boxesInWindow = inWindow("img"); 
    
    	// меняем атрибут data-src у всех видимых изображений
    	var imgEl = boxesInWindow;
    	for (var i=0; i<imgEl.length; i++) {
    		if(imgEl[i].getAttribute('data-src')) {
    		   imgEl[i].setAttribute('src',imgEl[i].getAttribute('data-src'));
    		   imgEl[i].removeAttribute('data-src');
    		}
    	}
    });


    Кстати, возвращаясь к координатам, уже под утро меня осенило, что таблица там эта и вовсе не нужна. Вполне достаточно выводить координаты на которых были сделаны эти скриншоты. Реализовал я это за пять минут просто дописав атрибут title к каждому изображению.
  • Браузер не может отрисовать очень большую таблицу. А нужно. Что делать?

    imhateb
    @imhateb Автор вопроса
    Сергей delphinpro, а Вы не могли бы подсказать как можно реализовать эту подгрузку. Просто моих знаний для этого определённо будет недостаточно. Или хотя бы где найти информацию по этой теме. Просто гугл выдаёт результаты чисто для ленивой загрузки стандартных страниц блогов и тому подобное. А тут-то случай явно нестандартный. Перемещение происходит в двух плоскостях.

    И так же вопрос про добавление всех этих элементов. Я там использовал почти такой же механизм как и с таблицей. Но возможно он не самый оптимальный. Вот код добавления картинок с заданным смещением:

    var coordX = 0,
    			coordY = 30300,
    			image = '0000';
    		
    
    		for(var i = 0; i < 30400; i++){			
    			
    			image = parseInt(image.replace(/\D+/g,"")); // переводим строку в число, чтобы отобросить лишние нули
    			image = image.toString();					// переводим число в строку, чтобы посчитать коёёличество оставшихся символов.
    			var len = image.length;		                // считаем количество символов
    			
    			if (len == 1) {image = '000'+image;}
    			if (len == 2) {image = '00'+image;}
    			if (len == 3) {image = '0'+image;}
    			
    			if (i % 301 == 0){
    				coordX = 0+600*(i/301);
    				coordY = 30300-300*(i/301);
    			}
    			
    			$('body').append('<img src="screens/Image_'+image+'.jpg" style="left: '+coordX+'px; top: '+coordY+'px;">');
    			coordX = coordX+200;
    			coordY = coordY+100;
    			
    			
    			
    			image = parseInt(image.replace(/\D+/g,"")); // переводим строку в число, чтобы можно было прибавить единицу
    			image = image+1;                            // +1
    			image = image.toString();					// переводим число в строку, чтобы подготовить к следующему циклу
    
    		}
  • Браузер не может отрисовать очень большую таблицу. А нужно. Что делать?

    imhateb
    @imhateb Автор вопроса
    Сергей delphinpro, ну как бы вот оно - lss.format23.ru (чтобы посмотреть надо будет немного подождать ))
  • Браузер не может отрисовать очень большую таблицу. А нужно. Что делать?

    imhateb
    @imhateb Автор вопроса
    Сергей delphinpro, да, это карта. Из игры )))
    Я написал кликер, который за ночь нафигачил мне 30к скриншотов, затем нужно было всё это склеить. Программы для склейки панорам не подходили. И я решил написать скрипт, который бы размещал эти скриншоты в нужном порядке. Всё как бы норм, не считая конского размера всего этого дела.
    И раз я всё это сделал в формате web-страницы, то было бы неплохо добавить туда ещё и навигацию, подумал я. Для этого мне нужны ячейки с координатами...
  • Браузер не может отрисовать очень большую таблицу. А нужно. Что делать?

    imhateb
    @imhateb Автор вопроса
    dimoff66, и уж простите за навязчивость, просто уже мозг кипит, не могли бы Вы подсказать как эту подгрузку реализовать. Или хотя бы где почитать про это можно. Просто в гугле если и удаётся найти что-то похожее, то не совсем подходящее мне.

    Как Вы уже наверное догадались, я делаю карту. Она состоит из 30401-го изображения. И было бы замечательно сделать подгрузку и для этих изображений. А то сейчас они все грузятся разом, что естественно очень долго. Весит всё это дело порядка двух гигабайт.
  • Браузер не может отрисовать очень большую таблицу. А нужно. Что делать?

    imhateb
    @imhateb Автор вопроса
    dimoff66, всё усложняется тем, что таблица повёрнута на 45 градусов... кошмар )
  • Браузер не может отрисовать очень большую таблицу. А нужно. Что делать?

    imhateb
    @imhateb Автор вопроса
    dimoff66, так а что подгружать при скролле, если таблица не создана?
  • Firefox выборочно не отображает SVG изображения. В чём причина?

    imhateb
    @imhateb Автор вопроса
    Алексей Бурлака, меня смущает ошибка 509. Но я не могу понять чем она вызвана и как её избежать.

    Простыню из свг это как? Просто тупо картинки друг за другом?
    Я в начальных попытках решить эту проблему добавил блок для "предзагрузки" всех изображений - в начале документа загружал картинки тегами вне видимости экрана. Результат в Firefoxe не изменился. Тогда я сделал этот блок предзагрузки видимым, чтобы увидеть, загружаются ли эти логотипы в нём. Нифига. И там и там не грузятся те или иные лого...
  • Firefox выборочно не отображает SVG изображения. В чём причина?

    imhateb
    @imhateb Автор вопроса
    Troodi Larson, возможно поможет, но хотелось бы более изящное решение, и вообще хочется разобраться в причине этой ситуации. В поддержку хостинга уже написал, может реально причина в них. Если разобраться не получится буду добавлять динамически.
  • Firefox выборочно не отображает SVG изображения. В чём причина?

    imhateb
    @imhateb Автор вопроса
    Moskus, хостинг Hostland. И если причина в нём, то почему в остальных браузерах такой проблемы даже близко нет, а только Firefox выёживается?
  • Firefox выборочно не отображает SVG изображения. В чём причина?

    imhateb
    @imhateb Автор вопроса
    Troodi Larson, вот что показывает:5a3027160eb19588281375.jpeg
    Те запросы что не загрузились он вообще как картинку не определяет. Грузит HTML код какой-то. У тех, что загружены, в "нагрузке ответа" - картинка.
  • Firefox выборочно не отображает SVG изображения. В чём причина?

    imhateb
    @imhateb Автор вопроса
    Troodi Larson, ну у меня видишь как (прикрепил картинку к вопросу). И каждый раз по разному. Не хотелось бы что бы так же было у клиента или у посетителя... Надо разобраться в причине такого поведения.
  • Firefox выборочно не отображает SVG изображения. В чём причина?

    imhateb
    @imhateb Автор вопроса
    Moskus, у тех что не грузит пишет 509 статус. 5a30224779675503404917.jpeg
    Только что с этим делать я не знаю. ((
  • Firefox выборочно не отображает SVG изображения. В чём причина?

    imhateb
    @imhateb Автор вопроса
    Moskus, да видно, что он какие-то грузит, а какие-то как будто бы не успевает. Почему не догружает - непонятно.