के माध्यम से एक छवि को टुकड़ों में काटना मैं एक साधारण आरा पहेली बना रहा हूं। ऐसा करने के लिए, मुझे उस तस्वीर को काटना होगा जिसे मैं 20 टुकड़ों में उपयोग कर रहा हूं। जावास्क्रिप्ट में 20 बराबर टुकड़ों में एक तस्वीर काटने और वेबपृष्ठ के भीतर उन्हें 20 अलग-अलग वस्तुओं के रूप में सहेजने का कोई तरीका है? या क्या मुझे बस फ़ोटोशॉप में जाना है और प्रत्येक तस्वीर को अपने आप में कटौती करना है और इसे कॉल करना है?जावास्क्रिप्ट
उत्तर
आप छवि को एक div पर पृष्ठभूमि के रूप में सेट करके, फिर अपनी पृष्ठभूमि-स्थिति सेट करके ऐसा कर सकते हैं। यह मूल रूप से CSS Sprites का उपयोग करने जैसा ही है।
(मान टुकड़े 100 x 100px हैं)
<div class="puzzle piece1"></div>
<div class="puzzle piece2"></div>
सीएसएस:
.puzzle {
background-image:url(/images/puzzle.jpg);
width:100px;
height:100px;
}
.piece1 {
background-position:0 0
}
.piece2 {
background-position:-100px -100px
}
अब क्या मैं div आईडी के साथ भी ऐसा कर सकता हूं? – TheChes44
निश्चित रूप से, वही बात। –
इस कैनवास के साथ क्या करना आसान है। सामान्य विचार है:
var image = new Image();
image.onload = cutImageUp;
image.src = 'myimage.png';
function cutImageUp() {
var imagePieces = [];
for(var x = 0; x < numColsToCut; ++x) {
for(var y = 0; y < numRowsToCut; ++y) {
var canvas = document.createElement('canvas');
canvas.width = widthOfOnePiece;
canvas.height = heightOfOnePiece;
var context = canvas.getContext('2d');
context.drawImage(image, x * widthOfOnePiece, y * heightOfOnePiece, widthOfOnePiece, heightOfOnePiece, 0, 0, canvas.width, canvas.height);
imagePieces.push(canvas.toDataURL());
}
}
// imagePieces now contains data urls of all the pieces of the image
// load one piece onto the page
var anImageElement = document.getElementById('myImageElementInTheDom');
anImageElement.src = imagePieces[0];
}
यह सुरक्षा त्रुटि दे सकता है: 'HTMLCanvasElement' पर 'toDataURL' निष्पादित करने में विफल: दंडित कैनवास निर्यात नहीं किया जा सकता है। –
इस मैट के लिए धन्यवाद। –
@MertKoksal इसकी वजह से CORS आप सेट कर सकते हैं: img.setAttribute ('crossOrigin', 'अनाम'); देखें: https://stackoverflow.com/a/20424457/7121889 –
आप एक स्रोत छवि के कुछ हिस्सों काट करने के लिए drawImage विधि का उपयोग करें और उन्हें एक कैनवास के लिए आकर्षित कर सकते हैं:
drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight)
https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Canvas_tutorial/Using_images
कुछ की तरह:
document.getElementById("vangogh").onclick=function()
{
draw();
};
function draw() {
var ctx = document.getElementById('canvas').getContext('2d');
ctx.drawImage(document.getElementById('source'),33,45);
}
फिर अपनी नई इकाइयों के लिए खींचने योग्य सामग्री बनाएं:
<div id="columns">
<div class="column" draggable="true"><header>A</header></div>
<div class="column" draggable="true"><header>B</header></div>
<div class="column" draggable="true"><header>C</header></div>
</div>
- 1. जावास्क्रिप्ट: जावास्क्रिप्ट
- 2. जावास्क्रिप्ट परिवर्तन जावास्क्रिप्ट को
- 3. जावास्क्रिप्ट: जावास्क्रिप्ट मान
- 4. जावास्क्रिप्ट
- 5. जावास्क्रिप्ट
- 6. जावास्क्रिप्ट
- 7. जावास्क्रिप्ट
- 8. जावास्क्रिप्ट
- 9. जावास्क्रिप्ट
- 10. जावास्क्रिप्ट
- 11. जावास्क्रिप्ट
- 12. जावास्क्रिप्ट
- 13. जावास्क्रिप्ट
- 14. जावास्क्रिप्ट
- 15. जावास्क्रिप्ट
- 16. जावास्क्रिप्ट
- 17. जावास्क्रिप्ट
- 18. जावास्क्रिप्ट
- 19. जावास्क्रिप्ट
- 20. जावास्क्रिप्ट
- 21. जावास्क्रिप्ट
- 22. जावास्क्रिप्ट
- 23. जावास्क्रिप्ट
- 24. जावास्क्रिप्ट
- 25. जावास्क्रिप्ट
- 26. जावास्क्रिप्ट
- 27. जावास्क्रिप्ट
- 28. जावास्क्रिप्ट
- 29. जावास्क्रिप्ट
- 30. जावास्क्रिप्ट
एक कैनवास तत्व आप "काट" टुकड़े करते हैं, लेकिन वास्तव में कैसे करना है यह क्या आप * टुकड़े के साथ क्या करना चाहते हैं * चारों ओर अपने सटीक आवश्यकताओं पर निर्भर करेगा। – Pointy
मैं चाहता हूं कि टुकड़े खींचने योग्य और ड्रॉप करने योग्य हो सकें। मैं वर्तमान में इस कार्य के लिए Jquery का उपयोग कर रहा हूं, लेकिन चूंकि यह सुविधा समर्थित नहीं है, और तीसरे पक्ष के ऐड-ऑन काम नहीं कर रहे हैं, मैं jquery का उपयोग करने से दूर शर्मनाक हूं। अगर मैं ड्रैग और ड्रॉप कर सकता हूं तो मैं एचटीएमएल 5 में बदल सकता हूं। वैसे भी, मैं मूल रूप से 20 अलग-अलग छवियां चाहता हूं जिन्हें मैं एक फ्रेम पर खींच और छोड़ सकता हूं ताकि वे पहेली को "हल" कर सकें। – TheChes44