Показать сообщение отдельно
  #3 (permalink)  
Старый 25.08.2014, 21:01
Новичок на форуме
Отправить личное сообщение для putrsa Посмотреть профиль Найти все сообщения от putrsa
 
Регистрация: 21.03.2014
Сообщений: 8

Спасибо, Ваш вариант работает (хотя не все понимаю - например почему ворочать контекст именно второго канваса, ладно, разберусь ), я подобный вариант пытался сделать (с транзитным канвасом), но что-то не пошло, пока что сделал так:
var cnvas=document.getElementById('WorkCanvas');
  var ctx = cnvas.getContext('2d');
  var btmap=ctx.getImageData(0, 0, cnvas.width, cnvas.height);
  var d = btmap.data;
  var stts= new Array (d.length);
  
  var kvostr=cnvas.height;
  var kvokol=cnvas.width;
  var allkvo=kvostr*kvokol;
  var nstr=1; //номер строки
  var nkol=0; //номер столбца
  var ff=0;
  
  for (var i=0;i<allkvo;i++)
  {
    ff=nstr*4*kvokol-nkol*4;
    gg=4*i;
   stts[gg+3] = d[ff];//d[ff]; 
   stts[gg+2] = d[ff-1]; 
   stts[gg+1] = d[ff-2]; 
   stts[gg] = d[ff-3]; 
   nstr++;
   if (nstr>kvostr) {nstr=1; nkol++};
  }
  var t=cnvas.height;
  cnvas.height=cnvas.width;
  cnvas.width=t; 
  var ctx = cnvas.getContext('2d');
  var btmap=ctx.getImageData(0, 0, cnvas.width, cnvas.height);
  var d = btmap.data;
  for( var i=0; i < stts.length; i++ ) d[i]=stts[i]; 
  ctx.putImageData(btmap, 0, 0);

нужно арифметику доработать, чтобы цвета не плыли и немного оптимизировать

Последний раз редактировалось putrsa, 25.08.2014 в 21:09. Причина: ошибся
Ответить с цитированием