php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 10.07.2005, 00:15  
Erfahrener Benutzer
 
Registriert seit: 19.06.2004
Beiträge: 216
Tschuu
Standard gegenfarbe

Hi ... ich will aus einer farbe eine gegenfarbe machen:
soweit hab ichs bis jetzt gemacht:
PHP-Code:
<?php
function negativ_color($func_wert) {
    
$farbe $func_wert;
    
$farbe str_replace('0''F'$farbe);
    
$farbe str_replace('1''E'$farbe);
    
$farbe str_replace('2''D'$farbe);
    
$farbe str_replace('3''C'$farbe);
    
$farbe str_replace('4''B'$farbe);
    
$farbe str_replace('5''A'$farbe);
    
$farbe str_replace('6''9'$farbe);
    
$farbe str_replace('7''8'$farbe);
    
$farbe str_replace('8''7'$farbe);
    
$farbe str_replace('9''6'$farbe);
    
$farbe str_replace('a''5'$farbe);
    
$farbe str_replace('A''5'$farbe);
    
$farbe str_replace('b''4'$farbe);
    
$farbe str_replace('B''4'$farbe);
    
$farbe str_replace('c''3'$farbe);
    
$farbe str_replace('C''3'$farbe);
    
$farbe str_replace('d''2'$farbe);
    
$farbe str_replace('D''2'$farbe);
    
$farbe str_replace('e''1'$farbe);
    
$farbe str_replace('E''1'$farbe);
    
$farbe str_replace('f''0'$farbe);
    
$farbe str_replace('F''0'$farbe);
    return 
$farbe;
}

$color "FF0000";
negativ_color($color);
?>
jetzt müssten die beiden variablen folgende werte besitzen:
$color = "FF0000";
$farbe = "00FFFF";

aber leider ist das nicht so ... $farbe ist in diesem beispiel bei der ausgabe 000000 ... also wo ist der fehler?

MfG: Tschuu
Tschuu ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 10.07.2005, 00:35  
Gast
 
Beiträge: n/a
Standard

ist doch klar Warum... der macht alles nacheinander und das F,0 am Ende steht kommt halt #000000 raus. Eine Möglichkeit das zu lösen (umständlich ich gebs zu) wäre eine Schleife in der Zeichen für Zeichen abgegrast wird ob z.B.: wenn das Erste Zeichen von $color = "F" ist und wenn ja, schreib da eine "0" hin und geh zu nächsten Zeichen.
 
Alt 10.07.2005, 01:37  
Erfahrener Benutzer
 
Registriert seit: 27.10.2004
Beiträge: 1.093
PHP-Kenntnisse:
Fortgeschritten
Chr!s
Standard

Hab da mal was gebastelt..
PHP-Code:
<?php
function negative($hex) {
         
$newhex '';
         
$hex strtoupper($hex);
         
$opposite = array('0' => 'F''1' => 'E''2' => 'D''3' => 'C''4' => 'B''5' => 'A''6' => '9''7' => '8''8' => '7''9' => '6''A' => '5''B' => '4''C' => '3''D' => '2''E' => '1''F' => '0');

         for(
$count=0$count<=5$count++) {
                 
$snip substr($hex$count1);
                 
$newhex .= $opposite[$snip];
         }
         
         return 
$newhex;
}
$newhex negative('FF0000'); // ergibt 00FFFF
?>
Chr!s ist offline  
Alt 10.07.2005, 01:41  
Gast
 
Beiträge: n/a
Standard

Uhm, einfach so:
(N = New)
NR = 255 - R
RG = 255 - G
RB = 255 - B
Fertig...
 
Alt 10.07.2005, 10:52  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Jo, hexdec() it dein Freund.

http://php.net/manual/en/function.hexdec.php

Basti
Basti ist offline  
Alt 10.07.2005, 10:57  
Erfahrener Benutzer
 
Registriert seit: 22.01.2005
Beiträge: 606
Connar befindet sich auf einem aufstrebenden Ast
Standard

Jo, dass is ne gute Idee, also von euch beiden zusammen ergäbe des dann sowas hier oder wie?

PHP-Code:
<?php
  $farbe 
"FF0000";
  
$rot hexdec($farbe[0].$farbe[1]);
  
$gruen hexdec($farbe[2].$farbe[3]);
  
$blau hexdec($farbe[4].$farbe[5]);
  
$rot_negativ dechex(255 $rot);
  
$gruen_negativ dechex(255 $gruen);
  
$blau_negativ dechex(255 $blau);
?>
hexdec() is schon praktisch, wenn ich überleg, dass ich mir ne eigene Funktion zum Umwandeln von RGB in Farbwerte geschrieben hab .. wie dumm.


MFG Connar
Connar ist offline  
Alt 10.07.2005, 11:06  
Erfahrener Benutzer
 
Registriert seit: 27.10.2004
Beiträge: 1.093
PHP-Kenntnisse:
Fortgeschritten
Chr!s
Standard

Was spricht gegen meine Funktion?
Chr!s ist offline  
Alt 10.07.2005, 12:02  
Erfahrener Benutzer
 
Registriert seit: 22.01.2005
Beiträge: 606
Connar befindet sich auf einem aufstrebenden Ast
Standard

Nichts, wir ham nur weitere möglichkeiten gezeigt


MFG Connar
Connar ist offline  
Alt 10.07.2005, 12:11  
Gast
 
Beiträge: n/a
Standard

Zu umständlich. Das Zauberwort heißt 'bitweise XOR'.

http://test.php-help.info/hex-2/

PHP-Code:
<?php
$col     
hexdec(FF0000);
$mask     hexdec(FFFFFF);
$ncol    $col $mask# <- XOR

printf('
%s XOR %s = %s
'

    
str_pad(dechex($col),  6'0'STR_PAD_LEFT), 
    
str_pad(dechex($mask), 6'0'STR_PAD_LEFT), 
    
str_pad(dechex($ncol), 6'0'STR_PAD_LEFT));
?>
 
Alt 10.07.2005, 12:21  
Erfahrener Benutzer
 
Registriert seit: 22.01.2005
Beiträge: 606
Connar befindet sich auf einem aufstrebenden Ast
Standard

Hm, dass gefällt mir.

Wäre str_pad überhaupt nötig? Wenn mans weglässt müsste doch eigentlich das Selbe rauskommen, oder?


MFG Connar
Connar ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
hexdec farbe, gegenfarbe .net, gegenfarbe c, str_replace farbcode, gegenfarbe umwandler

Alle Zeitangaben in WEZ +2. Es ist jetzt 04:53 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.