2013-04-07 4 views
0

Я узнал img_filter_colorize() из php немного. Я хочу дать пользователю возможность выбрать цвет для изображения. Примером может служить hereИзменение цвета изображения

Мой код:

<?php 
header('Content-type: image/png'); 
$im = imagecreatefrompng('flower.png'); 
imagefilter($im, IMG_FILTER_GRAYSCALE); 
imagefilter($im, IMG_FILTER_CONTRAST, 255); 
imagefilter($im, IMG_FILTER_NEGATE); 
imagefilter($im, IMG_FILTER_NEGATE); 
imagefilter($im, IMG_FILTER_COLORIZE, 255, 0, 0); 
imagepng($im, 'flower1.png'); 
?> 

Этот код создает новое изображение с красным цветом, но здесь я не хочу, чтобы создать изображение, только дисплей на экране.

Например, если пользователь выбирает красную кнопку, изображение меняется на красный и т. Д.

Возможно ли это? Есть ли другой способ сделать это (javascript, canvas или любой другой)?

ответ

0

Если вы оставите из второго параметра имя файла вызова imagepng(), он просто выведет байты изображения, и он не будет сохранен в файл, поэтому вы можете использовать этот скрипт в файле <img src="">, и он должен быть отлично отображен.

Однако, что было бы очень расточительно с ресурсами сервера, потому что каждый раз, когда изображение становится скачано расчеты должны снова работать, если у вас есть палитра исправить это, вероятно, лучше заранее создать изображения или, по крайней мере кэшировать сгенерированные версии.

Для пользователя, стоящего перед частью, вы, вероятно, захотите использовать javascript для изменения DOM внутри браузера, когда пользователь нажимает кнопку «красный». Что-то вдоль линий этого:

<img src="the_default_color.png" id="image"> 
<button id="make_it_red">Make it red</button> 
<script> 
document.getElementById('make_it_red').onclick = function(){ 
    document.getElementById('image').src = 'path_to_your_image_generator_php_script.php'; 
}; 
</script> 

Вы можете сделать скрипт PHP параметрироваться со значениями RGB, так что вы можете использовать его для каждого цвета.

0

imagepng будет выводить детские содержимое файла непосредственно, если вы не используете filename параметр, как:

imagepng($im); 

и чем, вы можете запросить изображение как

<img src="http://your-shost/yourimagescript.php" /> 
0

создать только вид на фото (без создания нового flower1.jpg)

<?php 
echo '<img src="photo.php" height="42" width="42">'; 
?> 

и в новом файле: photo.php

<?php 
header('Content-type: image/png'); 
$im = imagecreatefrompng('flower.png'); 
imagefilter($im, IMG_FILTER_GRAYSCALE); 
imagefilter($im, IMG_FILTER_CONTRAST, 255); 
imagefilter($im, IMG_FILTER_NEGATE); 
imagefilter($im, IMG_FILTER_NEGATE); 
imagefilter($im, IMG_FILTER_COLORIZE, 255,0, 0); 
imagejpeg($im); 
imagedestroy($im); 
?>