DZIEDI Posted September 12, 2010 Report Share Posted September 12, 2010 Sveiki! Vēlos pārkrāsot šādu gradient. (otra krāsa nav blata, bet caurspīdīga) Patreizējais kods ini_set("memory_limit","1024M"); $s=time(); $png = imagecreatefrompng("grad.png"); imagealphablending($png, false); imagesavealpha($png, true); imagetruecolortopalette($png, false, 255); $old = imagecolorclosest($png, 0, 0, 255); imagecolorset($png, $old, 0, 255, 0); imagealphablending($png, false); imagesavealpha($png, true); Imagepng($png, "grad2.png", 7); imagedestroy($png); echo "Aprēķināts: ".(time()-$s); Izmantojot imagetruecolortopalette($png, false, 255); pārkrāsojas, bet gradients nepaliek - galarezultāts ir vienkārši zaļš attēls. Neizmantojot to funkciju - vispār nekas nemainās. Šāds kods strādā, bet uz vairākiem attēliem tas ir par lēnu for($j=0;$j<5000;$j++){ for($i=0;$i<5000;$i++){ $rgb = imagecolorat($png, $i, $j); $colors = imagecolorsforindex($png, $rgb); $new_r = 255; $new_g = 0; $new_b = 0; $alpha = round($colors['alpha']); $new_color = imagecolorallocatealpha($png, $new_r, $new_g, $new_b,$alpha); imagesetpixel($png, $i, $j, $new_color); } } Ir kādas idejas kā izlabot pirmo? Quote Link to comment Share on other sites More sharing options...
ohmygod Posted September 12, 2010 Report Share Posted September 12, 2010 Nezīmē katru pixeli. Uzzīmē vienu vertikālo rindu un sakopē horizontāli. Arī to var darīt ar ģeometrisko progresiju progresiju. Ietaupīsi nejēgā daudz laika un resursu. Quote Link to comment Share on other sites More sharing options...
DZIEDI Posted September 12, 2010 Author Report Share Posted September 12, 2010 Šī bilde ir tikai kā piemērs, patiesībā vajag neregulāras formas objektu ar izpludinātām malām pārkrāsot. Diemžēl neregulārai figūrai kopēšanu nepiemēros. Quote Link to comment Share on other sites More sharing options...
ohmygod Posted September 12, 2010 Report Share Posted September 12, 2010 Parādi piemēru. Ko no kā ir jāiegūst. Quote Link to comment Share on other sites More sharing options...
DZIEDI Posted September 13, 2010 Author Report Share Posted September 13, 2010 (edited) Mašīna jāpārkrāso uz lietotāja norādīto krāsu saglabājot izpludinātās malas. Te ir rgb 255;0;0, oriģinālā ir balta mašīna Baltais variants Edited September 13, 2010 by DZIEDI Quote Link to comment Share on other sites More sharing options...
briedis Posted September 13, 2010 Report Share Posted September 13, 2010 Diezgan sarežģīti, nez, php būs īstais rīks tādu darbību veikšanai... Moš flashs būtu piemērotāks? Quote Link to comment Share on other sites More sharing options...
mounkuls Posted September 13, 2010 Report Share Posted September 13, 2010 (edited) Hmm, itkā jau png var imagefilltoborder izmantot, ja border ir kāda nošķirta krāsa. EDIT: Oj, bļin, nepiefiksēju, autoram vajag arī gradient... Edited September 13, 2010 by mounkuls Quote Link to comment Share on other sites More sharing options...
briedis Posted September 13, 2010 Report Share Posted September 13, 2010 Moš šitais ir kaut kas uz to pusi? http://stackoverflow.com/questions/1741488/using-a-transparent-png-as-a-clip-mask Karoč, doma tāda, ka to šablonu izmantot kā masku (tipiska padarīšana attēlu redaktoros, kā piem. photoshops vai gimp) Quote Link to comment Share on other sites More sharing options...
DZIEDI Posted September 13, 2010 Author Report Share Posted September 13, 2010 Flash nederēs, tur ir sarežģīāka attēla veidošana, jāsaliek kopā visa mašīna ar fonu. Cik noprotu, tad Imagick nenāk līdz php un ir papildus jāpievieno php.ini failam. Lai gan neesmu pārbaudījis tā darbības ātrumu, tomēr laikam izmantot jebkurā gadījumā nesanāks, jo plānots izmantot web hostinga pakalpojumus un nevarēšu pievienot imagick Prieks par lielo atsaucību :) Nu sliktākajā gadījumā var izmantot mašīnu bez izpludinātām robežām, bet gribējās pa glauno... Quote Link to comment Share on other sites More sharing options...
marrtins Posted September 14, 2010 Report Share Posted September 14, 2010 Ienāca prātā - vai tādus krāsojamus objektus nevar glabāt un manipulēt SVG? Otrs - man šķiet, ka agri vai vēlu hosteris šādu projektu patrieks no šārētā hostinga - kad sāks ģenerēt nedaudz par daudz bildīšu ;) Quote Link to comment Share on other sites More sharing options...
indoom Posted September 14, 2010 Report Share Posted September 14, 2010 Ja uz servera pieejams ImageMagick, tad ar to var izdarīt (caur komandlīniju, nav vajadzīgs imagick) http://www.imagemagick.org/Usage/compose/ http://www.imagemagick.org/Usage/channels/ Quote Link to comment Share on other sites More sharing options...
mad182 Posted September 15, 2010 Report Share Posted September 15, 2010 Manuprāt tur vispār php nav vajadzīgs. Uzzīmē fotošopā masku ar caurspīdīgu mašīnu un maini fona krāsu ar CSS. Tas neprasīs nekādus servera resursus un darbosies zibenīgi. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.