GD duotoner

Door Lode , 14 jaar geleden, 3.681x bekeken

Maakt een afbeelding duotone.
dus bijvoorbeeld grey, sepia, blue, lime.. Eigenlijk alles.
Lijkt op colorize filter van de bundled versie van GD binnen php.
Maar die heb je dus niet nodig.
Gebaseerd op een relatief eenvoudig duotone algoritme.

Is het test script voor een class onderdeel...
Dus zal hier ook niet verder ontwikkeld worden!!

LET OP!
Dit script loopt een image pixel voor pixel door en is dus erg CPU/Ram intensief.
En ik zou je dus absoluut willen afraden dit on-the-fly te gebruiken!

NB.
Hex validatie en imagecreation e.d. zijn slecht en erg standaard... Dit mag je zelf uitvogelen ;)

TODO:
alpha waardes origineel behouden ?!

EDIT:
Voor de ongelovige en/of on(willen)wetende nu ook de voorbeeldjes conform voorbeeld op http://www.lodesite.nl/phphulp/duotone/
waarbij 0.jpg dus het origineel is... (ook niet echt top kwaliteit jpg) maar foto rulez wel...

EDIT:
alpha shift was foutief... Wordt hier ook niet geimplementeerd, maar voor de goede orde..

Gesponsorde koppelingen

PHP script bestanden

  1. gd-duotoner

 

Er zijn 13 reacties op 'Gd duotoner'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Hipska BE
Hipska BE
14 jaar geleden
 
0 +1 -0 -1
je zegt dat deze functie al bestaat ingebouwd in GD?

Waarom dan het wiel opnieuw uitvinden?
Lode
Lode
14 jaar geleden
 
0 +1 -0 -1
Nee dat zeg ik niet helemaal...
Er bestaat een "soort gelijke" functie binnen de "Bundled" versie van GD binnen php.
Maar de kwaliteit van die functie liet mij te wensen over te eerste.
En daarnaast werkt het dus niet op alle servers. afhankelijk van de instalatie.

Had je geweten als je de functie had gekend en geprobeerd denk ik...


14 jaar geleden
 
0 +1 -0 -1
Quote:
"Dit script loopt een image pixel voor pixel door en is dus erg CPU/Ram intensief.
En ik zou je dus absoluut willen afraden dit on-the-fly te gebruiken!

Quote:
Hex validatie en imagecreation e.d. zijn slecht en erg standaard... Dit mag je zelf uitvogelen ;)

Dit heeft mij nu echt het idee dat iemand wat aan dit script heeft; behalve dan om te kijken hoe het duotone algoritme in elkaar zit.
Lode
Lode
14 jaar geleden
 
0 +1 -0 -1
Ik geef alleen aan dat ik hier geen updates ga posten meer omdat dit een test functie was.
En wat betreft setpixel(); dat is algemeen bekend denk ik. En als je het goed gebruikt (eenmalig) dus zeg maar geen probleem...
Maar ik lees bijna dagelijks nog topics over on-the-fly GD gebruik...

Maar goed ik vond 'm wel handig.. En heeft me wat tijd gekost...
Maar anders haal ik 'm wel weg hoor.
PHP erik
PHP erik
14 jaar geleden
 
0 +1 -0 -1
Ik heb het script niet gedraaid dus kan niet veel zeggen over mogelijke toepassingen, maar ik vind dit voor PHPhulp-begrippen een erg uniek script omdat er bitwise wordt gewerkt en hexadecimaal. Dat vind ik op zichzelf al erg nuttig voor de community, de meeste mensen hebben geen idee hoe het werkt of dat het bestaat.

Dus op dat gebied mijn complimenten.
Lode
Lode
14 jaar geleden
 
0 +1 -0 -1
@Erik
Thx.. Eindelijk iemand die het begrijp...
Geeft me weer een beetje hoop...

En ik zou zeggen probeer het eens ;-)

EDIT:
ik gebruik het bijvoorbeeld om 2 verschillende thumbs te maken om op te slaan en zo een nette rollover te kunnen maken zonder allerlei onbetrouwbare Javascripts e.d.
Hipska BE
Hipska BE
14 jaar geleden
 
0 +1 -0 -1
Quote:
Had je geweten als je de functie had gekend en geprobeerd denk ik...

Ik ben toch niet verplicht alle functies te kennen hoop ik.

Wat is er dan niet goed aan die ingebouwde functie? (heb je voorbeeldje?)
Lode
Lode
14 jaar geleden
 
0 +1 -0 -1
@Hipska
Nee hoor van mij hoef je niks..
Maar dan zou ik er persoonlijk ook niet over oordelen?!
Wat betreft een voorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
function duotoneBundled(&$img, $hex){
    if(function_exists('imagefilter')){
        //strip #
        $hex = ltrim($hex, '#');
        //shift RGB values
        $dec    = hexdec($hex);
        $r = $dec >> 16 & 0xFF;
        $g = $dec >> 8 & 0xFF;
        $b = $dec & 0xFF;
        imagefilter($img, IMG_FILTER_COLORIZE, $r, $g, $b);
    }
}

/************ DEBUG ******************/
ini_set('display_errors', true);
ini_set('error_reporting', 8191);
/*********** EXAMPLE ******************/
$jpg = imagecreatefromjpeg('0.jpg');

duotoneBundled($jpg, '#704214'); //sepia
//duotoneBundled($jpg, '#7F7F7F'); // grey
//duotoneBundled($jpg, '#336699'); // blue
//duotoneBundled($jpg, '#9900CC'); // purple
//duotoneBundled($jpg, '#7FFF00'); // lime


if(!headers_sent()){
    header('Cache-control: private');
    header('Content-type: image/jpeg');
    header('Content-Disposition: filename="'.basename(__FILE__).'.jpg"');
    imagejpeg($jpg, NULL, 100);
    break;
}

?>

Uitwerkingen staan op mijn site.

Beetje eigen initiatief mag ook wel natuurlijk... Ik ben hier niet om mensen te overtuigen. Als het niet met me eens bent prima.. Maar reageer dan ook gewoon niet misschien dat andere mensen het wel als nuttig ervaren.
Hipska BE
Hipska BE
14 jaar geleden
 
0 +1 -0 -1
ik zie nu wat je bedoeld. De ingebouwde functie doet alles te licht.
Den dat het nu duidelijker is voor anderen waarom men precies uw functie kunnen gebruiken ipv de ingebouwde.

Het toegevoegde waarde van uw functie zag ik eerst niet, maar nu is het heel duidelijk.
en zoals erik zegt, is het idd een mooi voorbeeld ook om te werken met hexadecimale getallen in php.
Lode
Lode
14 jaar geleden
 
0 +1 -0 -1
Zoals ik al gemeld heb tegen de admins...
Vind ik het persoonlijk niet correct dat al het commentaar weggehaald is!

Uit frustratie heb ik dat getypt om anderen iets duidelijk te maken!
Is dit een leer site of een ik houd mijn naam-hoog-site?

alle screenshots en dumps zijn welkom!

Geen zin meer.. maar ga zeker de browser cachen uitspitten. Sucks als je er 5 hebt ;-) Kan jij dat sneller graag...
Bas Kreleger
Bas Kreleger
14 jaar geleden
 
0 +1 -0 -1
Ik citeer jou Lode; "Nu maak je me toch wel een beetje pissig". Dat soort reacties heb ik verwijderd omdat het niet over het onderwerp van discussie ging maar persoonlijk werd.

Lode, als je het er niet mee eens bent, PM dan graag en ga hier niet mensen lopen opruien over het opsturen van screenshots en screendumps. Wat heeft dat voor zin? Wil je hier toch verder over praten, dan moet je me ff PMen, maar ik wil dat het hier clean blijft van dit soort discussies. Wil je de kat toch tegen de haren instrijken, dan verzoek ik je vriendelijk om je bijdrage te leveren aan een andere website.
Robin de Vries
Robin de Vries
14 jaar geleden
 
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Jelle -
Jelle -
13 jaar geleden
 
0 +1 -0 -1
Wel wel, wat vind ik hier.

Een zeer mooi en goed script. Thx hier kan ik zeker van leren :-)

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. gd-duotoner

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.