Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.08.2017, 20:15
Кандидат Javascript-наук
Отправить личное сообщение для Strongman Посмотреть профиль Найти все сообщения от Strongman
 
Регистрация: 22.03.2016
Сообщений: 132

Загружаю Image. Как получить пикселы?
Здорово, парни! У меня есть канва и я в скрипте создаю объект Image и читаю в него картинку "Map.png" - маленькая картинка. Как получить доступ к пикселам, прочитать их, отредактировать и положить обратно. Цель - сделать половину изображения прозрачной. Что-то при помощи контекста и ImageData не получается совсем. ImageData не может получать доступ к пикселам что-ли?. Я уже измучился совсем. Помогите, пожалуйста.
Ответить с цитированием
  #2 (permalink)  
Старый 04.08.2017, 20:26
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Strongman
Я уже измучился совсем.
Canvas избавит вас от мучений.
Ответить с цитированием
  #3 (permalink)  
Старый 04.08.2017, 21:40
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Strongman,

на картинку надо вешать событие onload, дождаться, когда загрузится.
ты ведь повесил такое событие, да?
Ответить с цитированием
  #4 (permalink)  
Старый 04.08.2017, 22:49
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

картинка от этого прозрачной не стала )

text text text text text text text text text text text text text text text 
<br>text text text text text text text text text text text text text text text 
<br>text text text text text text text text text text text text text text text 
<div style="position: absolute; top: 16px; width: 336px; height: 76px; background: linear-gradient(to right, rgba(255,255,255,0.5) 50%, rgba(255,255,255,0) 50%), url(https://javascript.ru/forum/images/ca_serenity/misc/logo.gif);"></div>


можно сделать из двух дивов, для них выставить opacity сколько надо
Ответить с цитированием
  #5 (permalink)  
Старый 04.08.2017, 22:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126


<style>
  img {
   position: absolute;
   opacity: .5;
   left: 0;
   top: 0;
  }
  .a{
  clip: rect(0px, auto, auto, 168px);
   opacity: 1;
  }

  </style>
  text text text text text text text text text text text text text text text
<br>text text text text text text text text text text text text text text text
<br>text text text text text text text text text text text text text text text
  <img src="https://javascript.ru/forum/images/ca_serenity/misc/logo.gif" alt="">
  <img src="https://javascript.ru/forum/images/ca_serenity/misc/logo.gif" alt="" class="a">

Последний раз редактировалось рони, 04.08.2017 в 23:02.
Ответить с цитированием
  #6 (permalink)  
Старый 05.08.2017, 02:34
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

<style>
  img {
   position: absolute;
   left: 0;
   top: 0;
   greetings: guys;
  }
  </style>
  text text text text text text text text text text text text text text text
<br>text text text text text text text text text text text text text text text
<br>text text text text text text text text text text text text text text text
  <img src="http://i77.beon.ru/60/78/2367860/60/96865460/QRHAEO.png" alt="" class="a">

Без опасити

Последний раз редактировалось j0hnik, 05.08.2017 в 02:41.
Ответить с цитированием
  #7 (permalink)  
Старый 05.08.2017, 08:00
Кандидат Javascript-наук
Отправить личное сообщение для Strongman Посмотреть профиль Найти все сообщения от Strongman
 
Регистрация: 22.03.2016
Сообщений: 132

Спасибо за ответы. А вот мне интересно все-таки тем способом, как я делал. Т.е. создаем канву, контекст, потом объект Image, потом читаю в Image картинку "Map.png". Да событие onload есть. И картинка является частью сайта - просто файл в папке лежит и все.
img.src = "Map.png";
img.onload = function()
{
    Context.drawImage(img, 0, 0);
}

Она отображается, но она как-будто над канвой и не редактируется. Вот это самое плохое, что я отметил для себя. Потом я читаю пикселы с ImageData:
function MMX()
{
ID = Context.getImageData(0, 0, 500, 300);
for(y = 0; y < 300; y++)
{
    M = 4*w*y;
    Text.innerHTML += "\n Stroka: y = " + y + "\n";	
    Text.innerHTML += "R = " + ID.data[M] + "\n"; 
    Text.innerHTML += "G = " + ID.data[M+1] + "\n";
    Text.innerHTML += "B = " + ID.data[M+2] + "\n"; 
    Text.innerHTML += "A = " + ID.data[M+3] + "\n"; 
    for(x = 0; x < 500; x++)
	{
	    M = 4*(w*y + x);
		/*
		Text.innerHTML += "\n Pixel: x = " + x + ", y = " + y + "\n";
		Text.innerHTML += "R = " + ID.data[M] + "\n"; 
                Text.innerHTML += ID.data[M+1]; 
		Text.innerHTML += ID.data[M+2]; 
                Text.innerHTML += ID.data[M+3];         
		*/
	}
}	
Context.putImageData(ID, 0, 0);

Text - это textarea. Как мне прочитать канву таким способом или это невозможно? Цель я уже говорил - нужно сделать половину пикселей прозрачными. Помогите, пожалуйста, еще разок.
Ответить с цитированием
  #8 (permalink)  
Старый 05.08.2017, 14:27
Кандидат Javascript-наук
Отправить личное сообщение для Strongman Посмотреть профиль Найти все сообщения от Strongman
 
Регистрация: 22.03.2016
Сообщений: 132

Здесь проблема в том, что Opacity у изображения регулируется целиком. Мне нужно изменить прозрачность для каждого пикселя.
Ответить с цитированием
  #9 (permalink)  
Старый 05.08.2017, 14:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Strongman,
https://javascript.ru/forum/misc/669...tml#post441671
Ответить с цитированием
  #10 (permalink)  
Старый 05.08.2017, 16:59
Кандидат Javascript-наук
Отправить личное сообщение для Strongman Посмотреть профиль Найти все сообщения от Strongman
 
Регистрация: 22.03.2016
Сообщений: 132

Рони, что-то Ваш пример не работает. Хотя тот чувак написал, что у него работает. Там какая-то ошибка вылетает:

Uncaught DOMException: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The canvas has been tainted by cross-origin data.
at getColorData (file:///Force.html:54:17)
at Image.myImage.onload (file:///Force.html:39:13)
getColorData @ Force.html:54
myImage.onload @ Force.html:39

И указывает на строку, где getImageData:
function getColorData()
{
myImage = ctx.getImageData(0, 0, 200, 200);

Можете помочь с этим?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить свойсвто объекта? Armen Общие вопросы Javascript 4 19.10.2014 06:45
Как получить значение цвета из color picker razorg1991 jQuery 1 06.10.2014 09:06
Как получить в JQUERY каждую строку как отдельный объект? Alex1233 Общие вопросы Javascript 3 22.08.2014 06:54
Как получить значение переменной из игры на HTML5? Dimaz Общие вопросы Javascript 6 10.08.2014 16:27
Как получить указатель на элемент вызвавший функцию pelayo Общие вопросы Javascript 9 29.06.2010 23:32