<-- Terug naar Snippets

Afbeeldingen in zwart-wit tonen met GD

PHP versie: n.v.t

Javascript: n.v.t

Een afbeelding in kleur omzetten naar een zwart-wit afbeelding is mogelijk met de GD library van PHP. Het originele script is op deze website te vinden. Ik heb het in een php functie gegoten die eenvoudig gebruikt kan worden om on-the-fly afbeeldingen in grijstinten te creëren.

Deze functie is op dit moment alleen geschikt voor JPEG afbeeldingen, maar is eenvoudig uit te breiden.

Sprinkhaan in kleur Sprinkhaan in zwart-wit

Broncode


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/jorendew/phphulp/inc/class.ubb.php on line 100

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/jorendew/phphulp/inc/class.ubb.php on line 106

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/jorendew/phphulp/inc/class.ubb.php on line 112

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/jorendew/phphulp/inc/class.ubb.php on line 119

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/jorendew/phphulp/inc/class.ubb.php on line 120

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/jorendew/phphulp/inc/class.ubb.php on line 121

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/jorendew/phphulp/inc/class.ubb.php on line 199

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/jorendew/phphulp/inc/class.ubb.php on line 287

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/jorendew/phphulp/inc/class.ubb.php on line 288

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/jorendew/phphulp/inc/class.ubb.php on line 289

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/jorendew/phphulp/inc/class.ubb.php on line 290

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/jorendew/phphulp/inc/class.ubb.php on line 291
Code
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?php
ini_set
('display_errors''On');
error_reporting(E_ALL);


function 
blackWhite($sFile$bSave false)
{
    
// Parameters voor het opslaan van de afbeelding
    // Alleen beschikbaar als $bSave == true.
    
$sPrefix 'bw_';
    
$sDir 'black_white/';
    
    function 
grayScale($r$g$b)
    {
        
// Formules volgen uit wat ooit voor zwart-wit televisie gebruikt werd
        
return (($r*0.299)+($g*0.587)+($b*0.114));
    }
    
    
// Breedte en hoogte bronafbeelding ophalen
    
list($iWidth$iHeight) = getimagesize($sFile);
    
    
// Benodigde resources aanmaken
    
$rSource imagecreatefromjpeg($sFile);
    
$rBlackWhite imagecreate($iWidth$iHeight);
    
    
// Palette met grijstinten aanmaken.
    
$aPalette = array();
    for(
$i 0$i 256$i++)
    {
        
$aPalette[$i] = imagecolorallocate($rBlackWhite$i$i$i);
    }
    
    
// Pixel voor pixel doorlopen en omzetten
    
for($x 0$x $iWidth$x++)
    {
        for(
$y 0$y $iHeight$y++)
        {
            
// RGB waarden bepalen
            
$iRgb imagecolorat($rSource$x$y);
            
$iR = ($iRgb >> 16) & 0xFF;
            
$iG = ($iRgb >> 8) & 0xFF;
            
$iB $iRgb 0xFF;
            
            
// Grijswaarde bepalen en pixel omzetten
            
$iGrayScale grayScale($iR$iG$iB);
            
imagesetpixel($rBlackWhite$x$y$aPalette[$iGrayScale]);
        }
    }
    
    
// Weergeven of opslaan
    
if($bSave)
    {
        
// Affbeelding opslaan op locatie
        
$sLocation $sDir.$sPrefix.basename($sFile);
        
imagejpeg($rBlackWhite$sLocation);
    }
    else
    {
        
// Juiste header zetten en afbeelding teruggeven
        
header('Content-type: image/jpeg');
        
imagejpeg($rBlackWhite);
    }
}

if(isset(
$_GET['file']) && file_exists($_GET['file']))
{
    
blackWhite($_GET['file']);
}    
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>PHPtuts.nl - PHP Snippets - Afbeeldingen in zwart-wit tonen met GD</title>
    
    <link rel="stylesheet" href="../../styles/default.css" type="text/css" media="screen" />
    <link rel="stylesheet" href="../../styles/ubb.css" type="text/css" media="screen" />
    
    <style type="text/css">
    #images {
        margin: 10px;
    }
    </style>
</head>
<body>
    <div id="wrap">
        <p class="none small align-right"><a href="/codeSnippets/">&lt;-- Terug naar Snippets</a></p>
        <h1>Afbeeldingen in zwart-wit tonen met GD</h1>
        <div id="info">
            <p>PHP versie: n.v.t</p>
            <p>Javascript: n.v.t</p>
        </div>
        
        <p>Een afbeelding in kleur omzetten naar een zwart-wit afbeelding is mogelijk met de GD library van PHP. Het originele script is op <a href="http://php.about.com/od/gdlibrary/ss/grayscale_gd_2.htm" target="_blank">deze website</a> te vinden. Ik heb het in een php functie gegoten die eenvoudig gebruikt kan worden om on-the-fly afbeeldingen in grijstinten te creëren.</p>
        
        <p>Deze functie is op dit moment alleen geschikt voor JPEG afbeeldingen, maar is eenvoudig uit te breiden.</p>
        
        <div id="images">
            <img src="black_white/sprinkhaan.jpg" alt="Sprinkhaan in kleur" />
            <img src="black_white.php?file=black_white/sprinkhaan.jpg" alt="Sprinkhaan in zwart-wit" />
        </div>
                
        <?php        
        
// Weergeven broncode
        
define('FILE'__FILE__);
        require_once(
'../broncode.php');
        
?>
    </div>    

<!-- Google analytics (geen onderdeel van script) -->
<script type="text/javascript" src="/inc/ga1.js"></script>
<script type="text/javascript" src="/inc/ga2.js"></script>

</body>
</html>