gd library: imagecopy() erstellt merkwürdige farben

Alles, was PHP betrifft, kann hier besprochen werden.

gd library: imagecopy() erstellt merkwürdige farben

Postby salatmensch » 12. September 2005 15:49

hallo,
ich versuche ein großes bild in kleinere teilbilder zu zerlegen. leider entstehen dabei unterschiedliche farben, auch wenn das quellbild ein true-color jpeg war.
hier der code:


function copyPiece($filename, $offsetX = 0, $offsetY = 0, $cellnumber = 0, $filenameingtype = 1) {
//init;
if (is_null($this->image)) {die("quellbild nicht geladen.");}
//echo $this->width_cell . "x" , $this->height_cell . ".<br>";
$curr_col = $cellnumber % $this->max_col;
$curr_row = floor($cellnumber / $this->max_col);
$src_x = $offsetX + ($this->width_cell * $curr_col);
$src_y = $offsetY + ($this->height_cell * $curr_row);

//image stuff
$dir = $this->base_filename;
if (!file_exists($dir)) {
mkdir($dir);
if (!file_exists($dir)) {die("kann zielverzeichnis nicht erstellen");}
}
$filename_file = basename($filename, ".jpg");
if ($filenameingtype==1) {
$filenameImg = $dir . "/" . $filename_file . $this->rowprep . ($curr_row + 1) . $this->colprep . ($curr_col + 1) . ".jpg";
}
elseif ($filenameingtype==0) {$filenameImg = $dir . "/" . $filename_file . $cellnumber .".jpg";}
else {die("dateibennungsverfahren nicht implementiert.");}


$image_cell = imagecreate($this->width_cell, $this->height_cell);
$img_color = ImageColorAllocate($image_cell, 100, 200, 200); //hintergrundfarbe customizen?
//imagefill($image_cell, 0, 0, $img_color); //nur ausführen, wenn nicht genug pixel zum kopieren da sind, statt imagefill lieber schachbrettmuster kopieren
imagecopy($image_cell, $this->image, 0, 0, $src_x, $src_y, $this->width_cell, $this->height_cell);
//oder imagecopyresampled(); // für die anderen zoomstufen
imagejpeg($image_cell, $filenameImg, $this->quality); //bitte hier wie corel draw die datei nennen
echo "<img src=$filenameImg>"; //echo "x: $src_x, y: $src_y<br>";
if ($curr_col == $this->max_col -1) {echo "<br>";}
}

function copyAll() {
$num_cells = $this->max_row * $this->max_col;
for ($cellnumber=0; $cellnumber<$num_cells; $cellnumber++) {
$this->copyPiece($this->filename, 0, 0, $cellnumber);
}
echo "<hr>colmax: " , $this->max_col , " | rowmax: ", $this->max_row , "<br>";
}

irgendwelche ideen?
und ein anderes problem: wißt ihr, wie man firefox überzeugen kann, in tabellenzellen abgelegte bilder randlos aneinander zu kleben?

grüße,
salat
every day one step closer to insanity
salatmensch
 
Posts: 7
Joined: 26. June 2004 13:37

Postby Wiedmann » 12. September 2005 15:58

$image_cell = imagecreate($this->width_cell, $this->height_cell);

http://de.php.net/manual/en/function.im ... ecolor.php
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby salatmensch » 12. September 2005 16:13

liebes dankeschön.
salat
every day one step closer to insanity
salatmensch
 
Posts: 7
Joined: 26. June 2004 13:37


Return to PHP

Who is online

Users browsing this forum: No registered users and 6 guests