2 回答

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個(gè)贊
正如我的評(píng)論中所述,您當(dāng)前的代碼只是在勾勒輪廓。這適用于繪制網(wǎng)格,但如果您希望向單元格添加一些文本,則必須手動(dòng)繪制每個(gè)矩形,并使用這些坐標(biāo)來(lái)放置文本。
使用imagettfbbox,您可以計(jì)算文本的寬度/高度,您需要該信息才能將文本“居中”到單元格中。
關(guān)于你的第二個(gè)問(wèn)題,將總圖片寬度除以你想要的單元格數(shù),這樣你就會(huì)知道每個(gè)單元格的大小。
我已經(jīng)更新了您的代碼以顯示計(jì)算 x/y 坐標(biāo)的一般思路
<?php
$imgpath = "duck.jpg";
$img = imagecreatefromjpeg($imgpath);
$size = getimagesize($imgpath);
$width = $size[0];
$height = $size[1];
$red = imagecolorallocate($img, 255, 0, 0);
// Number of cells
$xgrid = 5;
$ygrid = 5;
// Calulate each cell width/height
$xgridsize = $width / $xgrid;
$hgridsize = $height / $ygrid;
// Remember col
$c = 'A';
// Y
for ($j=0; $j < $ygrid; $j++) {
// X
for ($i=0; $i < $xgrid; $i++) {
// Dynamic x/y coords
$sy = $hgridsize * $j;
$sx = $xgridsize * $i;
// Draw rectangle
imagerectangle($img, $sx, $sy, $sx + $xgridsize, $sy + $hgridsize, $red);
// Draw text
addTextToCell($img, $sx, $xgridsize, $sy + $hgridsize, $hgridsize, $c . ($i + 1));
}
// Bumb cols
$c++;
}
function addTextToCell($img, $cellX, $cellWidth, $cellY, $cellHeight, $text) {
// Calculate text size
$text_box = imagettfbbox(20, 0, 'OpenSans', $text);
$text_width = $text_box[2]-$text_box[0];
$text_height = $text_box[7]-$text_box[1];
// Calculate x/y position
$textx = $cellX + ($cellWidth / 2) - $text_width;
$texty = $cellY - ($cellHeight / 2) - $text_height;
// Set color and draw
$color = imagecolorallocate($img, 0, 0, 255);
imagettftext($img, 20, 0, $textx, $texty, $color, 'OpenSans', $text);
}
// Save output as file
imagejpeg($img, 'output.jpg');
imagedestroy($img);
shell_exec('open -a Preview output.jpg');

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊
1)檢查imagettftext()
和imagefttext()
功能。其中之一應(yīng)該做你想做的。
2) 將輸入圖像的寬和高分別除以要?jiǎng)澐值牧袛?shù)和行數(shù),得到每個(gè)單元格的寬和高。
- 2 回答
- 0 關(guān)注
- 144 瀏覽
添加回答
舉報(bào)