2011-12-11 17 views

उत्तर

0

हम कल्पना के queryFontMetrics फ़ंक्शन का उपयोग कर सकते हैं। इस लिंक को देखें (http://php.net/manual/en/imagick.queryfontmetrics.php)

इस फ़ंक्शन की चेकआउट प्रतिक्रिया आपको चौड़ाई और ऊंचाई मिलेगी।

0

देखो: http://www.imagemagick.org/ImageMagick-7.0.0/script/conjure.php (3 उदाहरण)

जादू द्विआधारी आप XML आधारित लिपियों में Magick स्क्रिप्टिंग भाषा (MSL) लिखा चलाने देता है। वे आईएम "क्वेरी-फ़ॉन्ट-मेट्रिक्स" का उपयोग कर सकते हैं - कमांड, जो अन्य बाइनरी द्वारा उपलब्ध नहीं प्रतीत होता है।

0

यह वास्तव में देर हो चुकी है, लेकिन, PHP.net से:

का उपयोग करना:

Imagick :: queryFontMetrics - फ़ॉन्ट मैट्रिक्स

इस तरह का प्रतिनिधित्व एक सरणी देता है:

// Set font. 
     $font = PATH/TO/YOUR/CUSTOM/FONT 
    // Get dimensions. 
    // Create a new Imagick object. 
     $imTest = new Imagick(); 

    // Create an ImagickDraw object. 
     $drawTest = new ImagickDraw(); 

    // Set the font. 
     $drawTest->setFont($font); 

    // Set the local X and Y. 
     $localX = 0; 
     $localY = 0; 

    // Dump the font metrics, autodetect multiline 
     for ($i = 0; $i < strlen($yourText); $i++) { 
     if ($yourText[$i] === ' ') { 
      $tempX += $imTest->queryFontMetrics($drawTest, $yourText[$i])['textWidth']; 
     } else { 
      $tempX += $imTest->queryFontMetrics($drawTest, $yourText[$i])['originX'] + $imTest->queryFontMetrics($drawTest, $yourText[$i])['boundingBox']['x2'] + $imTest->queryFontMetrics($drawTest, $yourText[$i])['boundingBox']['x1']; 
     }  
     } 

कहां:

चरित्रविड्थ और चरित्र हाइट - ये फ़ॉन्ट के लिए निर्दिष्ट आकार से संबंधित प्रतीत होते हैं और फ़ॉन्ट से फ़ॉन्ट (एक ही आकार में) से भिन्न नहीं लगते हैं। जैसे, वे विशेष रूप से उपयोगी नहीं हैं (कम से कम मेरे लिए)। वे विश्वसनीय संकेतक नहीं हैं कि फ़ॉन्ट कितना स्थान उपयोग करेगा।

ascender - आरोही आधार रेखा से ऊपर के फ़ॉन्ट का हिस्सा है। यह चरित्र से संबंधित नहीं है - फ़ॉन्ट में प्रत्येक चरित्र के लिए आरोही मान समान है।

अवरोही - अवरोधक आधार रेखा से नीचे के फ़ॉन्ट का हिस्सा है। यह एक नकारात्मक आंकड़े के रूप में दर्शाया गया है। आरोही के पूर्ण मूल्य जोड़ना और अवरोधक आपको ...

टेक्स्टहेइट - यह फ़ॉन्ट की कुल ऊंचाई है। फ़ॉन्ट के हर चरित्र के लिए यह वही है चाहे उसके मामले के बावजूद या कितना स्थान कब्जा कर रहा है। पैराग्राफ को आउटपुट करते समय यह ऊंचाई निर्धारित करने के लिए उपयोग किया जा सकता है।

टेक्स्टविड्थ - यह मान चरित्र से चरित्र में भिन्न होता है और चरित्र की चौड़ाई है। यह उपयोगी है अगर बाउंडिंगबॉक्स उपयोग योग्य मान प्रदान नहीं करता है (नीचे बाउंडिंगबॉक्स देखें)। वर्णों को एक एक करके स्थितिबद्ध करते समय - टेक्स्टविड्थ का उपयोग न करें, originX का उपयोग करें (नीचे देखें)।

maxHorizontalAdvance - मुझे डर है कि मैंने इसका उद्देश्य बिल्कुल नहीं लिया है। फ़ॉन्ट में प्रत्येक चरित्र के लिए यह वही है।फ़ॉन्ट एरियल इटालिक के लिए आकार 67 पर, मान 89 है जो एम या डब्ल्यू के लिए उसी आकार में की अग्रिम रिपोर्ट की तुलना में काफी व्यापक है।

बाउंडिंगबॉक्स - यह एक आयताकार के चार बिंदुओं (x1, y1, x2, y2) का वर्णन करने वाला एक सहयोगी सरणी देता है जिसमें वर्ण होता है। ये मान मूल के सापेक्ष हैं (यानी आप छवि के भीतर चरित्र को चित्रित करने के निर्देशांक हैं)। लौटा आयत बहुत मुद्रित चरित्र के सभी हिस्सों को सटीक और संलग्न करता है - लेकिन बाउंडिंगबॉक्स केवल एकल वर्णों पर काम करता है। यह एकाधिक वर्णों के लिए सटीक आंकड़े नहीं देगा (वैसे भी मेरे अनुभव में)। एक बॉक्स को चित्रित करते समय आपको मूल में "x" मानों को जोड़ने और मूल से उपरोक्त "y" मानों को जोड़ने की आवश्यकता होती है। आप SPACE वर्ण के लिए बाउंडिंगबॉक्स पर भरोसा नहीं कर सकते हैं। यह (0,0,0,0) का बाउंडिंग बॉक्स देता है। टेक्स्टविड्थ (ऊपर देखें) यहां काम में आता है।

मूलX और मूल - इन्हें गलत तरीके से शीर्षक दिया गया है। मूलX और मूल में लौटाए गए मान वास्तव में अग्रिमएक्स और अग्रिम हैं। ये मान आपको वर्तमान के सापेक्ष अगले चरित्र की स्थिति देते हैं।

और बाद में आप इस तरह अपने पाठ के साथ छवि उत्पन्न कर सकते हैं:

// Generate image. 
    $cmd = 'convert -size ' . $localX . 'x' . $maxY . ' xc:none -gravity Center -font ' . $font . ' -pointsize ' . $fontSize . ' -annotate +0+0 "' . $yourText . '" ' . FINAL/PATH/TO/YOUR/FILE.png'; 
    $r = shell_exec($cmd); 
संबंधित मुद्दे