Защо Photoshop като може PHP 10х SOMNIVM

staf

Registered
GD библиотеката ни предоставя прексрасната възможност да рисуваме, оцветявайки пикселче по пикселче и ето какво сътворих по въпросните два ефекта:
Демо:
http://84.242.156.50/122/1.php?id=1
http://84.242.156.50/122/1.php?id=2

Код:
<?PHP
//взимаме изображението, което искаме да манипулираме
$im = imagecreatefromjpeg('temple.jpg');
//взимаме размерите му
$imwidth = imagesx($im);
$imheight = imagesy($im);
//дефинираме черен цвят за пикселите,които ще нарисуваме и полу-прозрачното бяло на слоя, който ще е над изображението
$pattern_color  = imagecolorallocate ($im, 0, 0, 0);
$overlay_color = imagecolorallocatealpha ($im, 255, 255, 255, 75);
//рисуваме един правоъгълник с размера на изображението, който се явява като полу прозрачен бял слой над изображението
imagefilledrectangle ($im, 0, 0, $imwidth, $imheight, $overlay_color);
//избираме си един от двата ефекта. ако нямаме валиден избор връщаме картинката недокосната
switch($_GET['id']) {
//точките на разстояние 5 пиксела оедна от друга по хоризонтала и вертикала
case 1:
for($i=2;$i<=$imheight;$i+=5) {
    for($z=2;$z<=$imwidth;$z+=5) {
        imagesetpixel ($im, $z, $i, $pattern_color);
    }
}
break;
//чертите: всяка линия е на разстояние 2 пиксела под предната.Това може да се направи и с imageline, но ми се струва, че е все едно от гледна точка на изчисленията, защото ако не се лъжа imageline използва imagesetpixel, за да рисува линиите.
case 2:
for($i=0;$i<=$imheight;$i+=2) {
    for($z=0;$z<=$imwidth;$z++) {
        imagesetpixel ($im, $z, $i, $pattern_color);
    }
}
break;

}
//пращаме картинката към браузъра
header("Content-type: image/jpeg");
imagejpeg($im);
imagedestroy($im);
exit;
?>

Ето и резултатите:
точки:
templebar_dots.jpg

чертички ("монитор"):
templebar_lines.jpg


Във втория вариант често служи за фон на текст. Използва се нерядко по менюта на уеб сайтове. Ето кодче, което само трябва да се добави към предното:

Код:
<?PHP
case 3:
$k = 2;
for($i=0;$i<$imheight;$i++) {
    for($z=$k;$z<=$imwidth;$z+=5) {
        imagesetpixel ($im, $z, $i, $pattern_color2);
    }
    $k--;
}
break;
case 4:
$k = 2;
for($i=$imheight;$i>$imheight-$_GET['cokyl'];$i--) {
    for($z=$k;$z<=$imwidth;$z+=5) {
        imagesetpixel ($im, $z, $i, $pattern_color2);
    }
    $k--;
}
break;
?>

Ето и резултат:
nely1.jpg

nely2.jpg


За втория вариант трябва да зададем колко искаме да ни е висок "цокълът", образуван от ефекта.

Давайте идеи за други и накрая може, и цял редактор да си сглобим

P.S. $pattern_color2 е дефиниран като бяло без алфа канал.

10х SOMNIVM
 
въпрос - имам една снимка искам да я скрия 1px 1px квадрачета .. и кат някой щтракне върху квадрачето да се отваря снимката ..?
някой знае ли?
 
Код:
<a href="снимка"><img src="снимка" width="1" height="1"></img></a>
ама аз нещо несхващам що ще я криеш ама както решиш...и земи се регистрирай..и..малко небеше за тук това ...
 
не си ма разбрал...
имам например една снимка искам да я напрая мнооооогоо квадрачета например 200 000 ... всеки квадрат да е 1px по 1px , а тия квадрачета да са скрити и кат щтракна в/у тях да се показвват .. кат играта мините в windowsa... нещо подобно искам .. обаче аз да мога да слагам снимки там :)
 
аз съм регнат тук , ама ма марзи да влизам с ника :щ
тоя сайт много полезен и поздравявам целия му екип за работата дет са свършели ..
 
в такъв случай мисля, че ще играе photoshop и javascript , но не съм запознат с photoshop-а :? значи идеята ти е да разделиш една картинка на много квадратчета и при натискане къде да се отваря снимката на мястото на същото квадратче или на нова страница ?
абе мисля , че може да стане и с html , но трябва малко да се поразровя...и ще ти кажа по-подробно...
 
с Fireworks може да нарежеш картинката и после направо да я запишеш като хтмл документ. какво и бафиту каза с някав JS да се направи това с появяването на картинката.
но каккъв ще ти е основния проблем примерно имаш картинка 500 рх на 500 рх и ако я нарежеш картинката на 1х1 рх сметни колко малки картинки по 1 пиксел ще имаш и малку трудно ще се получи
 
дам идеята ми е точно таква...
е да разделя една картинка на много квадратчета и при натискане, снимката да се отваря на същото квадраче
е не е задължително да е 1px по 1 px може и малко по големи 10x по 10x
па дано да стани :)
 
абе можеше с html беше нещо такова :
<map name="име">
<area shape="rect" coords="някфиКоординати" href="ТукаИмаДжаваСкрипт">
<img usemap="#име" src="картинката" border=# width=## height=##>
но остава проблема с координатите понеже малко трудно ще се оправиш дори и с тия 1px .. и честно да ти кажа нямам си и идея за JavaScript-а :) може би трябва да потърсиш в сайтовете за javascript-ове където дават фрее..там все ще има нещо подобно...с Fireworks май ставаше да преди я бях ползвал ..но.. и там си нямам идея как ще стане :)
 
въх да бе вярно чудех се къде го гледах това...сега остава и да си намериш javascript-a ...аз ако мога ще потърся...
П.С. javascripta ще замени линковете както е дадено в урока примерно
в урока е
<AREA SHAPE="POLY" COORDS="23,79,96,101,23,123" HREF="forme.html">
а с javascript ще стане така
<AREA SHAPE="POLY" COORDS="23,79,96,101,23,123" HREF="javascript:фунцията">
вече..не съм наясно с javascript...
 
е то тоя урок не ми върши работа...за кво ми е map ...
и ако стани с map за всяко квадраче трябва да пиша кординатите?

дам java script ни трябва
 
ами ако искаш всички квадратчета да са с еднакви размери мисля ,че няма да има голям проблем просто малко ще смяташ :)
върши си работа урока...даже доста..
 
дам без map нема да стани ... въпрос сега.. напраих тия квадрати http://kvadarat1.hit.bg/index.html ... сега java script ли ми трябва? ( за да свържа снимката с квадратите) ...?
 
да , сега ти трябва джава скрипт който при натискане на тия координати който ще зададеш на квадратчетата с мапа да ги отваря на тяхно място...просто не съм запознат с джата скрипт и..немога да ти помогна ...
П.С. пак потърси в тия сайтове за безплатни скриптове сигурно ще има успех..
 
ето ти един по интересен вариант..
http://web-tourist.net/project/bafitu/kvadrati.html само трябва кажеш колко да са квадратите , големината общата , височина , дължина и картинка...и малко цвят...
 

Горе