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