| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

06-09-2009, 13:21
|
|
bofan
Registrierter Benutzer
|
|
Registriert seit: Aug 2005
Ort: Berlin / Germany
Beiträge: 154
|
|
Dynamische Bilder - Spamschutz
hallo!
ich habe mir eine Rechenaufgabe in einem Spam-Schutzbild gebastelt.
Auf meinem Lokalen Server (EasyPhp 1.8) sieht das Bild so aus:
Auf dem Webserver leider so:
Wie kann ich erreichen, dass auch um die Zahlen herum, die Farbe/Punkte sind?
__________________
Beachte: Dumm ist, wer Dummes tut.
|

06-09-2009, 13:32
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo,
bitte schildere dein Problem ausführlich. Leider ist bisher nicht zu erkennen, wie du die Bilder erzeugst oder ob du nur fertige Bilder ineinander blendest. Wenn du es mit PHP machst, poste die relevanten Code-Schnipsel.
Da es offenbar unterschiedliche Server sind, vergleiche bitte deren Version und lass es uns wissen und prüf gleich noch die Version der jeweilig verwendeten GD Bibliothek.
Gruß,
Anja
|

06-09-2009, 15:26
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Dürfte wohl ein Problem mit der (Alpha-)Transparenz sein.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

06-09-2009, 18:01
|
|
bofan
Registrierter Benutzer
|
|
Registriert seit: Aug 2005
Ort: Berlin / Germany
Beiträge: 154
|
|
Okay.
Also Lokal sind es folgende Werte laut phpinfo()
Code:
GD Support enabled
GD Version bundled (2.0.28 compatible)
FreeType Support enabled
FreeType Linkage with freetype
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled
und auf dem Server:
Code:
GD Support enabled
GD Version bundled (2.0.34 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.3.9
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled
Also ist der Server aktueller!
Mein Code mit dem ich dieses Bild baue:
Ich rufe eine Funktion auf:
PHP-Code:
//Farbwerte / Zufall
$from = rand(50,205).','.rand(50,205).','.rand(100,205).',0';
$to = rand(100,200).','.rand(100,200).','.rand(1,100).','.rand(1,100);
//Höhe/Breite
$height = 50;
$steps = 100;
$step_width = 1;
gradient ($from, $to, $height, $steps, $step_width);
Die Funktion:
PHP-Code:
function gradient($from, $to, $height, $steps, $step_width) {
session_start();
$zahl1 = rand(1,9);
$operation = rand(1,2);
if($operation == 1)
{
$zahl2 = rand(1,9);
$op_z = "+";
$erg = $zahl1 + $zahl2;
}
else
{
$zahl2 = rand(1,$zahl1);
$op_z = "-";
$erg = $zahl1 - $zahl2;
}
$_SESSION['spamschutz'] = $erg;
$im = imagecreatetruecolor(++$steps * $step_width, $height);
imagesavealpha($im, true);
imagealphablending($im, false);
imagefill($im, 0, 0, imagecolorallocatealpha($im, 225, 225, 225, 127));
$from = explode(',', $from);
$to = explode(',', $to);
$diff = array();
for ($i = 0; $i < 4; $i++) {
$diff[$i] = ($from[$i] - $to[$i]) / $steps;
}
for ($step = 0; $step < $steps; $step++) {
for ($i = 0; $i < 4; $i++) {
$rgb[$i] = round($from[$i] - $diff[$i] * $step);
if ($i < 3) {
if ($rgb[$i] > 255) {
$rgb[$i] = 255;
}
} elseif ($rgb[3] > 127) {
$rgb[3] = 127;
}
}
$col = imagecolorallocatealpha($im, $rgb[0], $rgb[1], $rgb[2], $rgb[3]);
$col1 = imagecolorallocatealpha($im, 250, 250, 250, 250);
$col2 = imagecolorallocatealpha($im, 1, 1, 1, 1); //schwarz
imageline($im, 0, 0, 0, 50, $col2);
imageline($im, 0, 0, 100, 0, $col2);
imageline($im, 99, 0, 99, 50, $col2);
imageline($im, 0, 49, 100, 49, $col2);
imageline($im, 1, 1, 1, 50, $col2);
imageline($im, 1, 1, 99, 1, $col2);
imageline($im, 98, 1, 98, 50, $col2);
imageline($im, 1, 48, 99, 48, $col2);
$string = $zahl1 ." ".$op_z." ".$zahl2;
imagettftext($im, 20, 0, 5, 35, $col1, './font/courbd.ttf', $string);
for($i = 0; $i < 20; $i++)
{
imagesetpixel($im, rand(2,96), rand(3,48),$col2);
}
for($i = 0; $i < 20; $i++)
{
imagesetpixel($im, rand(2,96), rand(3,48),$col1);
}
imagefilledrectangle($im, $step * $step_width, 0, ($step + 1) * $step_width - 1, $height, $col);
}
header('Content-type: image/png');
header( "Expires: 01 Jan 2009 07:00:00 GMT" );
header( "Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT" );
header( "Cache-Control: no-store, no-cache, must-revalidate" );
header( "Cache-Control: post-check=0, pre-check=0", false );
header( "Pragma: no-cache" );
imagepng($im);
imagedestroy($im);
}
__________________
Beachte: Dumm ist, wer Dummes tut.
|

06-09-2009, 18:06
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo,
ich hab's jetzt nicht genauer betrachtet, aber warum benutzt du kein Alphablending?
PHP-Code:
imagealphablending($im, false);
Wenn du an der Stelle true nimmst, funktioniert es dann?
Gruß,
Anja
|

06-09-2009, 18:10
|
|
bofan
Registrierter Benutzer
|
|
Registriert seit: Aug 2005
Ort: Berlin / Germany
Beiträge: 154
|
|
Danke!
Das wars.... Ohh man war ich wohl Blind... 
__________________
Beachte: Dumm ist, wer Dummes tut.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|