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.
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
Code1
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/"><-- 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>