php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 29.03.2005, 18:04  
Erfahrener Benutzer
 
Registriert seit: 22.01.2005
Beiträge: 609
Connar befindet sich auf einem aufstrebenden Ast
Standard Einzelne Farbpixel kopieren

Hi,
ich hab ein Problem und zwar möchte ich die einzelnen Farben eines Bildes kopieren und später in ein neues wieder einfügen.

PHP-Code:
<?php
    header
("Content-type:image/jpeg");
    
    
$bild imagecreatefromjpeg("logo_klein.jpg");
    
    
$index 0;
    
$x imagesx($bild);
    
$y imagesy($bild);
    for(
$i 0$i $x$i++)
    {
        for(
$j 0$j $y$j++)
        {
            
$array imagecolorat($bild$i$j);
            
$array imagecolorsforindex($bild$array);
            
$red[$index] = $array["red"];
            
$green[$index] = $array["green"];
            
$blue[$index] = $array["blue"];
            
$index++;
        }
    }
    
    
imagedestroy($bild);
    
    
    
    
$pic imagecreatetruecolor(5050);
    
    
    
$indiez 0;
    for(
$k 0$k $x$k++)
    {
        for(
$l 0$l $y$l++)
        {
            
$r $red[$indiez];
            
$g $green[$indiez];
            
$b $blue[$indiez];
            
$farbe imagecolorallocate($pic$r$g$b);
            
imagesetpixel($pic$k$l$farbe);
        }
    }
    
    
imagejpeg($pic);
    
imagedestroy($pic);
?>

Ich hab mal bewusst für beide Bilder unterschiedliche Variablen benutzt, aber egal was ich mache, am Ende kommt irgendwie immer nur ein graues Bild raus.
Das Bild ist auch eins mit grauem (gleiches Grau) Hintergrund aber in der Mitte stehen noch 2 Buchstaben in rot. Was mach ich falsch, oder warum erscheinen die nicht?
Vielen Dank.


MFG Connar
Connar ist gerade online  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 29.03.2005, 18:09  
Gast
 
Beiträge: n/a
Standard

Jo was soll dein "$indiez" darstellen ?
 
Alt 29.03.2005, 18:11  
Erfahrener Benutzer
 
Registriert seit: 22.01.2005
Beiträge: 609
Connar befindet sich auf einem aufstrebenden Ast
Standard

Des is der Zähler für das array (also damit der des immer um eins erhöht und da dann den nächsten Wert einfügt. Nachdem es net funktioniert hatte, hab ich halt irgendwas anderes als Variablenname (war vorher au $index) gesucht und des halt schnell reingeschrieben *gg*


MFG Connar
Connar ist gerade online  
Alt 29.03.2005, 18:12  
Gast
 
Beiträge: n/a
Standard

Ja du musst die Farbwerte vom Originalbild ermitteln, und diese dem neuen Bild übergeben.
 
Alt 29.03.2005, 18:14  
Erfahrener Benutzer
 
Registriert seit: 22.01.2005
Beiträge: 609
Connar befindet sich auf einem aufstrebenden Ast
Standard

Aber des tu ich doch oder?
Ich kopier die alten mit Hilfe von imagecolorat und imagecolorsforindex und speicher sie in den Variablen $red, $green und $blue.
Danach übergeb ich die dem neuen Bild und setze dort die einzelnen Pixel mit Hilfe von imagesetpixel auf den Wert des alten Bildes.


MFG Connar
Connar ist gerade online  
Alt 29.03.2005, 18:15  
Erfahrener Benutzer
 
Registriert seit: 22.01.2005
Beiträge: 609
Connar befindet sich auf einem aufstrebenden Ast
Standard

AAAHHH ich hab den Fehler
Ich erhöhe Indiez garnet. Sorry, war n dummer Fehler, aber hab ich halt einfach übersehn.


MFG Connar
Connar ist gerade online  
Alt 29.03.2005, 18:20  
Gast
 
Beiträge: n/a
Standard

oder einfach so:

EDIT: kleine Änderung für Anfänger und getestet ...

PHP-Code:
<?php

Header
("Content-type: image/jpeg");

$altes_bild "logo_klein.jpg";

// Originalbild
$im1 imageCreateFromJPEG($altes_bild);
$bb imageSX($im1); // breite
$hh imageSY($im1); // höhe

// neues Bild
$im2 ImageCreateTrueColor($bb$hh);

// Pixelweise einlesen und neu schreiben

    
for ($y 0$y <= $hh$y++) {
    for (
$x 0$x <= $bb$x++) {

    
// Farbwerte von $im1 ermitteln
    
$RGB imagecolorsforindex($im1imagecolorat($im1$x$y));
    
$R $RGB["red"];
    
$G $RGB["green"];
    
$B $RGB["blue"];

    
// neue Farbe für $im2 festlegen
    
$new_color ImageColorAllocate($im2$R$G$B);

    
// neue Pixel schreiben
    
imagesetpixel ($im2$x$y$new_color);
    }
    }

imagejpeg($im2);

// Bilder aus dem Speicher löschen
imageDestroy($im1);
imageDestroy($im2);

?>
 
 


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
einzelne Teile aus HTML includieren mibmib PHP Tipps 2008 4 03.04.2008 11:55
Daten kopieren PHP Tipps 2006 14 09.06.2006 20:35
phpMyAdmin Laufzeitinformationen für einzelne Benutzer? nicobischof Datenbanken 1 20.04.2006 09:25
Problem beim Kopieren von Dateien Smiley PHP Tipps 2006 5 04.02.2006 00:11
Ordner statt einzelne Datein CHRIS HTML, Usability und Barrierefreiheit 4 30.12.2005 18:51
Kopieren auf dem Server PHP-Fortgeschrittene 11 24.09.2005 16:48
Verzechnisse kopieren PHP Tipps 2005-2 2 14.08.2005 15:17
Dateien in ein anderes Verzeichnis kopieren PHP Tipps 2005-2 3 09.08.2005 12:03
ZIP Datei auf Server kopieren, entpacken und Inhalt in DB PHP-Fortgeschrittene 40 06.06.2005 23:33
text auf knopfdruck in die zwischenablage kopieren PHP Tipps 2005 6 22.03.2005 20:59
Datensatz kopieren Datenbanken 1 03.01.2005 11:55
DB Tabelle kopieren und anschliessend löschen test022 PHP Tipps 2004-2 15 25.11.2004 10:40
bild von einer Seite kopieren PHP-Fortgeschrittene 7 09.11.2004 18:37
session_destroy aber nur einzelne, nicht alles Sonja PHP Tipps 2004 5 09.09.2004 14:33
Ordner und Datein auf lokalen Rechner kopieren... 18inch PHP Tipps 2004 4 29.06.2004 16:53

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php bild pixel kopieren, farbpixel zähler, farbpixel, farbpixel kopieren, rgb array kopieren, farbpixel speicherplatz

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:34 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.