2017-05-27 4 views
2

Bitte beachten Sie, dass ich bereits gelesen habe Generating a random hex color code with PHP und ich habe Hilfe von dieser Frage auch. Aber meine Frage ist anders als diese Frage.Wie generiert man einen zufälligen DUNKEL-Hex-Farbcode mit PHP?

Ich werde mehr als 1000 Bilder mit etwas Text wie unten Bild erstellen.

enter image description here

Textfarbe ist immer weiß. Ich muss Hintergrundfarbe nach dem Zufallsprinzip generieren. Ich verwende folgenden Code, um eine zufällige Farbe zu erzeugen.

<?php 

function random_color_part() { 
    return str_pad(dechex(mt_rand(0, 255)), 2, '0', STR_PAD_LEFT); 
} 

function random_color() { 
    return random_color_part() . random_color_part() . random_color_part(); 
} 

echo random_color(); 

?> 

Dieses Skript erzeugt helle Farben wie weiß, hellgelb, hellblau. Ich muss sie entfernen. Wenn die Hintergrundfarbe auch hell ist, ist es schwer den Text zu lesen.

So gibt es eine Möglichkeit, diesen Code nur dunkle Farben zu erzeugen?

+0

Abhängig von wo Ihre Schwelle für „Licht“ ist, aber je näher Ihre Zufallszahl wird auf 255 ist, desto heller die Farbe sein wird. Wenn Sie diese Obergrenze verringern, erhalten Sie dunklere Farben. – rickdenhaan

+0

@rickdenhaan Das heißt, wenn die Zahl in der Nähe von 255 ist, ist es Licht? Hab ich recht? Also, wenn ich 'mt_rand (0, 255)' zu etwas wie 'mt_rand (0, 150) 'modifiziere, gibt es immer dunkle Farben zurück? – Ranuka

+0

Verringern Sie die Konstante '255'. Je niedriger - desto dunkler. –

Antwort

1

Helle Farben verwenden hohe Werte. max Argument Tieferlegung für rand() sollten dunklere Farben erstellen, wie folgt aus:

function random_color_part() { 
    return str_pad(dechex(mt_rand(0, 127)), 2, '0', STR_PAD_LEFT); 
} 

Aber Sie werden mit einer genauen Schwelle experimentieren, um richtigen Farben zu bekommen.

Sie können dieses Snippet verwenden, um zu überprüfen, was mit Farben passiert, wenn Sie den maximalen Farbwert (max) verringern.

function hex(i) { 
 
    var hex = i.toString(16); 
 
    if (hex.length == 1) { 
 
    hex = '0' + hex; 
 
    } 
 
    return hex; 
 
} 
 

 
var max = 150; 
 

 
for (var i = 0; i < max; i += 10) { 
 
    var td = ''; 
 
    for (var j = 0; j < max; j += 10) { 
 
    for (var k = 0; k < max; k += 10) { 
 
     var color = '#' + hex(i) + hex(j) + hex(k); 
 
     td += '<td style="background-color:' + color + ';">&nbsp;</td>'; 
 
    } 
 
    } 
 
    $('table').append('<tr>' + td + '</tr>'); 
 
}
table { 
 
    border-collapse: collapse; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
</table>

+0

Die Frage ist über 'PHP' aber die Antwort ist in' JavaScript' –

+0

@JohnChristianDeChavez Antwort ** IS ** in 'PHP', das zusätzliche Code-Snippet ist in js, weil Sie PHP-Code auf Stackoverflow-Site nicht ausführen können .. . – mx0

Verwandte Themen