第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在現(xiàn)有圖像上繪制一個(gè)帶有每個(gè)單元格坐標(biāo)的網(wǎng)格

在現(xiàn)有圖像上繪制一個(gè)帶有每個(gè)單元格坐標(biāo)的網(wǎng)格

PHP
青春有我 2023-03-04 18:11:43
我正在嘗試制作一個(gè)函數(shù),它接受一個(gè) JPG 文件,添加一個(gè)網(wǎng)格覆蓋,并在每個(gè)單元格中寫(xiě)入文本 A1、A2、A3 等等。當(dāng)前代碼(下方)僅繪制網(wǎng)格,具有靜態(tài)列/行大小。問(wèn)題 1) 如何在每個(gè)單元格中添加坐標(biāo)作為文本?例如,行是字母,列是數(shù)字。所以第一行是 A1、A2、A3 ...,下一行是 B1、B2、B3。問(wèn)題 2)如何修改它,以便指定我想要的行數(shù)和列數(shù),并且它會(huì)自動(dòng)相應(yīng)地調(diào)整列/行的大小以適應(yīng)輸入圖像的尺寸?function draw_grid(&$img, $x0, $y0, $width, $height, $cols, $rows, $color) {    imagesetthickness($img, 5);    //draw outer border    imagerectangle($img, $x0, $y0, $x0+$width*$cols, $y0+$height*$rows, $color);    //first draw horizontal    $x1 = $x0;    $x2 = $x0 + $cols*$width;    for ($n=0; $n<ceil($rows/2); $n++) {        $y1 = $y0 + 2*$n*$height;        $y2 = $y0 + (2*$n+1)*$height;        imagerectangle($img, $x1,$y1,$x2,$y2, $color);    }    //then draw vertical    $y1 = $y0;    $y2 = $y0 + $rows*$height;    for ($n=0; $n<ceil($cols/2); $n++) {        $x1 = $x0 + 2*$n*$width;        $x2 = $x0 + (2*$n+1)*$width;        imagerectangle($img, $x1,$y1,$x2,$y2, $color);    }}$imgpath = "foto/306/306.jpg";$img = imagecreatefromjpeg($imgpath);$size = getimagesize($imgpath);$width = $size[0];$height = $size[1];$red   = imagecolorallocate($img, 255,   0,   0);draw_grid($img, 0,0, $width /10 , $height /10 ,20,10,$red);header("Content-type: image/jpg");imagejpeg($img);imagedestroy($img);
查看完整描述

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');

http://img1.sycdn.imooc.com//640319930001fe2a07990534.jpg

查看完整回答
反對(duì) 回復(fù) 2023-03-04
?
叮當(dāng)貓咪

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊

1)檢查imagettftext()imagefttext()功能。其中之一應(yīng)該做你想做的。

2) 將輸入圖像的寬和高分別除以要?jiǎng)澐值牧袛?shù)和行數(shù),得到每個(gè)單元格的寬和高。


查看完整回答
反對(duì) 回復(fù) 2023-03-04
  • 2 回答
  • 0 關(guān)注
  • 144 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)