Учитывая черно-белое изображение, которое пользователь создал. Я хочу добавить функцию цвета.
Поскольку размер картины, которую он создал, может меняться, я установил высоту в PHP и обратил исходное изображение:Изменение цвета пикселя в черно-белом изображении
//Get img Data
$.ajax({
url: "/_app/request.php",
type: "POST",
dataType:'json',
data: ({msg : message}),
success: function(data){
$('#qroriginal').attr("src",data)
}
});
Внутри функции создания я использовал:
$img= imagescale($img , 200, 200);
, а затем изменил цвет, используя палитру цветов в качестве входных данных:
//in front and back are the new rgb color values
var c=$('#prev');
var ctx = c[0].getContext("2d");
var img=$('#original');
ctx.drawImage(img[0],0 ,0);
var imgData= ctx.getImageData(0,0, c[0].width, c[0].height);
//change colors
var i;
for (i = 0 ; i<imgData.data.length;i+=4){
if(imgData.data[i] > 200){
imgData.data[i] = front[0];
imgData.data[i+1] = front[1];
imgData.data[i+2] = front[2];
}
else if(imgData.data[i] < 50){
imgData.data[i] = back[0];
imgData.data[i+1] = back[1];
imgData.data[i+2] = back[2];
imgData.data[i+3] = imgData.data[i+3];
}
Теперь проблема: Без масштабирования, значение RGB из черных уже между 245-255. Но если бы я его перемасштабировал. Я получаю некоторые значения, которые находятся между 100-150. Поэтому я не знаю, есть ли это белый или черный пиксель.
Я думал об изменении функции create в PHP или написании лучшего фильтра в javascript, глядя на соседний пиксель.
Не можете ли вы сделать это наоборот, перекрасить, а затем масштабировать? Масштабирование обычно считается деструктивным процессом (данные, которые когда-то были потеряны), поэтому обычно он остается последним, что вы делаете при работе с изображениями. – GordonM
Это был бы вариант, который будет работать наверняка, но я хочу сделать это на основе клиента. В противном случае я должен отправить запрос на сервер каждый раз, когда был выбран новый параметр цвета. – Pamana
Вы можете сохранить копию исходного изображения на сервере и применить к нему любые изменения цвета, а затем поместить его перед отправкой. – GordonM