2013-08-25 8 views
6

के साथ निरंतर परिपत्र पैटर्न पेंट करने के लिए कैसे मैं इस छवि है:html5 कैनवास

plain sleeves

और मैं पैटर्न के रूप में छवि karo pattern साथ आकर्षित करने के लिए चाहते हैं। जब मैंने किया मैं इस तरह कैनवास पर एक परिणाम मिला:

karo pattern over sleeves

लेकिन मैं उत्पादन की जरूरत है

sleeves with aligned karo pattern

होने के लिए तो मेरे सवाल है:

How do I curve the pattern like this?

एचटीएमएल

वॉल-मार्ट -
<canvas id="mr_rotator_can" width="436" height="567"></canvas> 
    <canvas id="f6258182013" width="436" height="567"></canvas> 

जे एस

var source, source_ctx, sleeve, sleeve_ctx, finalsleeve, finalsleeve_ctx, temp_can1, temp_can1_ctx; 
     $(document).ready(function() { 



      temp_can1 = document.getElementById('f6258182013'); 
      temp_can1_ctx = temp_can1.getContext('2d'); 

      rotator3('http://i.stack.imgur.com/mLgiX.png', '30'); 
      draw_on_cloth("f6258182013", 'http://i.stack.imgur.com/1j8Dw.png', "mr_rotator_can", "img_fastening1a"); 

     }); 

     function rotator3(var2, var3) //var2=image aka pattern var3= angle for rotate 
     { 
      var mr_rotator_var = document.getElementById('mr_rotator_can'); 
      var mr_rotator_var_ctx = mr_rotator_var.getContext("2d"); 
      mr_rotator_var.width = mr_rotator_var.width; 
      var imageObj_rotator3 = new Image(); 

      imageObj_rotator3.onload = function() { 
       var pattern_rotator3 = mr_rotator_var_ctx.createPattern(imageObj_rotator3, "repeat"); 
       mr_rotator_var_ctx.fillStyle = pattern_rotator3; 
       mr_rotator_var_ctx.rect(0, 0, mr_rotator_var.width, mr_rotator_var.height); 
       mr_rotator_var_ctx.rotate(var3 * Math.PI/180); 
       mr_rotator_var_ctx.fill(); 

      }; 
      imageObj_rotator3.src = var2; 


     } 
     function draw_on_cloth(var1, var2, var3, var4) //var1=the output canvas var2=body part var3= mr_rotator_can var4=image tag 
     { 
      debugger; 
      var temp_fun_canvas = document.getElementById(var1); 
      var temp_fun_canvas_ctx = temp_fun_canvas.getContext("2d"); 
      temp_fun_canvas.width = temp_fun_canvas.width; 
      var fimg = new Image(); 


      fimg.onload = function() { 

       temp_fun_canvas_ctx.drawImage(fimg, 0, 0); 
       temp_fun_canvas_ctx.globalCompositeOperation = "source-atop"; 
       var pattern = temp_fun_canvas_ctx.createPattern(mr_rotator_can, 'repeat'); 
       temp_fun_canvas_ctx.rect(0, 0, mr_rotator_can.width, mr_rotator_can.height); 
       temp_fun_canvas_ctx.fillStyle = pattern; 
       temp_fun_canvas_ctx.fill(); 
       temp_fun_canvas_ctx.globalAlpha = .10; 
       temp_fun_canvas_ctx.drawImage(fimg, 0, 0); 
       temp_fun_canvas_ctx.drawImage(fimg, 0, 0); 
       temp_fun_canvas_ctx.drawImage(fimg, 0, 0); 

      }; 
      fimg.src = var2; 
     } 

Here is what i have done so far on JSFiddler

+0

मेरे सिर के ऊपर से, आप एक ध्रुवीय समन्वय प्रणाली पर स्विच कर सकते हैं। "वक्रता" के साथ आकर्षित करने के लिए इतना आसान तरीका है। [यह (https://github.com/lsauer/vector-js) स्क्रिप्ट] रूपांतरण में आपकी सहायता भी कर सकता है। –

+0

यदि आप ऐसी छवि प्रदान कर सकते हैं जो प्रत्येक बिंदु पर दिशा जानकारी देता है तो आप इसे सामान्यीकृत कर सकते हैं। जैसे लाल चैनल = एक्स समन्वय, हरे रंग के चैनल = वाई समन्वय। फिर एक दोहराव ढाल है जो आपके इच्छित आकार का पालन करता है, और डेटा को सरणी के रूप में प्राप्त करके प्रस्तुत करता है, इसे मैन्युअल रूप से संशोधित करता है और इसे वापस रखता है (या कस्टम शेडर का उपयोग करता है लेकिन वे अभी तक ठीक से समर्थित नहीं हैं)। आप अल्फा के रूप में नीले रंग के चमक और अल्फा के रूप में नीले रंग का उपयोग करके एक छवि का उपयोग भी कर सकते हैं। – Dave

+0

मेरा उत्तर यहाँ देखें: http://stackoverflow.com/questions/18428355/how-to-bend-curve-a-image-in-html5-canvas/18431486#18431486 – markE

उत्तर

0

एक कंपनी है कि ऑनलाइन शर्ट की एक बड़ी मात्रा में बेचता से एक सबक ले लो।

वे क्या करते हैं रंगीन स्विच की श्रृंखला के साथ एक अच्छा नमूना शर्ट दिखाते हैं।

वैकल्पिक रूप से, किसी भी शर्ट है कि कंप्यूटर के लिए मुश्किल बढ़ाने हैं की डिजिटल फ़ोटो लेने - अपने चेकर पैटर्न की तरह।

वैकल्पिक रूप से, एक 3 डी मॉडलिंग कार्यक्रम है जहाँ आप अपनी शर्ट वायरफ़्रेम कर सकते हैं, तो उस wireframe मोड़ और अंत में wireframe से अधिक बनावट नक्शे लागू का उपयोग करें।

एचटीएमएल कैनवास सिर्फ तुम क्या इच्छा करने के लिए एक अच्छा उपकरण नहीं है।

+1

के लिए समाधान आप शर्ट का 3D मॉडल बना सकते हैं और उस पर पैटर्न बनावट लागू करने के लिए सलाह देते हैं, तो एक ही है कि जावास्क्रिप्ट में के रूप में अच्छी तरह से करने और एचटीएमएल' ' पर आकर्षित कर सकते हैं। – Bergi

+0

मैं था ब्लेंडर आर्मचर जैसे कुछ "आर्म-विद-बेंट-कोहनी" के वायरफ्रेम बनाने के लिए कुछ और सोचने के बारे में सोचते हैं। फिर उस वायरफ्रेम पर बनावट लागू करें ताकि ओपी का चेकरबोर्ड पैटर्न घुमावदार हाथ से घुमाए। वैसे भी, मैं किसी के बारे में नहीं सोच सकता उचित रूप से सरल 2 डी कैनवास चाल जो अकेले कैनवास का उपयोग करके एक अच्छा परिणाम उत्पन्न करेगी। – markE

+0

मुझे वेबग्ल में स्थानांतरित करना पड़ सकता है। –

संबंधित मुद्दे