2013-02-15 9 views
7

अंतिम आउटपुट छवि की तरह होना चाहिए (नमस्ते वर्ल्ड) से अधिक पाठ आकर्षित करने के लिए: Ignore the line thickness Please..पीएचपी जी.डी. कैसे एक लाइन

यहाँ मैं क्या कर रहा हूँ है: -

$im = imagecreate(400,400); 

$txtcol = imagecolorallocate($im, 0xFF, 0x00, 0x00); 

$size = 20; 

$txt = 'DUMMY TEXT'; 

$font = './font/Capriola-Regular.ttf'; 

/*two points for base line*/ 

$x1 = 50; $x2 = 300; 

$y1 = 150; $y2 = 170; 

/*bof finding line angle*/ 

$delta_x = $x2-$x1; 

$delta_y = $y2-$y1; 

$texangle = (rad2deg(atan2($delta_y,$delta_x)) * 180/M_PI)-360; 

/*eof finding the line angle*/ 


imageline($im,$x1,$y1,$x2,$y2,$txtcol); //Drawing line 

imagettftext($im, $size, $texangle, $x1, $y1, $txtcol, $font, $txt); // Drawing text over line at line's angle 

और वर्तमान आउटपुट की तरह है :

Current output

किसी को भी बता सकते हैं कि मेरे कोड के साथ क्या गलत?

धन्यवाद

+0

'imagettftext' में परिभाषित' $ ty' कहां है? – webnoob

+0

क्षमा करें कि $ i1 @webnoob मुझे सूचित करने के लिए धन्यवाद नहीं है :) – ROBIN

+0

मुझे लगता है कि समस्या रेखा कोण खोजने के साथ है। आपको क्या लगता है @webnoob – ROBIN

उत्तर

1

ठीक है, आसपास खेल रहा है। अन्य मूल्यों के साथ

enter image description here

आउटपुट:: अपने मूल्यों के साथ

$texangle = (atan2($delta_y,$delta_x) * -180/M_PI)-360; 

आउटपुट: के बजाय ऐसे:

साथ
$texangle = (rad2deg(atan2($delta_y,$delta_x)) * 180/M_PI)-360; 

enter image description here

1

यह सही बात आप जो खोज की जा सकती है नहीं है, लेकिन मैं इसे मदद से आप

$im = imagecreate(400,400); 

$txtcol = imagecolorallocate($im, 0xFF, 0xFF, 0x00); 

$size = 20; 

$txt = 'DUMMY TEXT'; 

$font = 'Capriola-Regular.ttf'; 

/*two points for base line*/ 

$x1 = 70; $x2 = 170; 

$y1 = 140; $y2 = 240; 

/*bof finding line angle*/ 

$delta_x = $x2-$x1; 

$delta_y = $y2-$y1; 

$texangle = (rad2deg(atan2($delta_y,$delta_x)) * 180/M_PI)-360; 

/*eof finding the line angle*/ 


imageline($im,$x1,$y1,$x2,$y2,'0xDD'); //Drawing line 
imagettftext($im, $size, -45, $x1, $y1-10, '0xDD', $font, $txt); // Drawing text over line at line's angle 

header('Content-Type: image/png'); 

imagepng($im); 
imagedestroy($im); 

मूल्यों कठिन कोडित रहे हैं विश्वास करते हैं। यहां कोण को -45 के रूप में दिया गया है और उस कोण के लिए यदि आप चाहते हैं कि आपका टेक्स्ट ऊपर पंक्ति में दिखाई दे, तो आपको अपनी लाइन की प्रारंभिक वाई स्थिति से मूल्य कम करना होगा। और आपको लाइन के x1, x2y1, y2

+0

Thats काम करता है। प्रारंभ में मैं परीक्षण कर रहा था इसलिए मैं हार्ड कोडित मान लेता हूं। अब सवाल यह है कि यदि हम लाइन की कॉर्डिनेट्स को गतिशील रूप से प्रदान कर रहे हैं तो हम कल्पनाशीलता और वाई के लाल मूल्य के लिए कोण कैसे ढूंढेंगे? – ROBIN

+0

@ रोबिन: मुझे लगता है कि वेबनोब का समाधान काम करना चाहिए। मैंने इसका परीक्षण नहीं किया है – zamil

1

2 विचारों के साथ कोण की गणना करने के लिए कोड लिखना होगा, अभी परीक्षण नहीं कर सकते हैं।

  1. 0 (x = 1, y = 0) या (x = 0, y = 1) कहां है। ऐसा लगता है कि आपका टेक्स्ट 90 डिग्री से बंद है जिसका आमतौर पर मतलब है कि आपका मानना ​​0 सही है, जब यह सीधे हो या इसके विपरीत हो।

  2. (rad2deg(atan2($delta_y,$delta_x)) * 180/M_PI)-360; क्या आप यहां दोहरे काम कर रहे हैं? rad2deg रेडियंस से डिग्री तक बदल जाता है। 180/M_PI रेडियंस से डिग्री तक एक रूपांतरण भी है।