Oh MyUtils

इमेज क्रॉपर - इमेज क्रॉप और रोटेट ऑनलाइन

ड्रैग सिलेक्शन, आस्पेक्ट रेशियो और रोटेशन के साथ इमेज क्रॉप करें। 100% क्लाइंट-साइड — कोई इमेज अपलोड नहीं।

अक्सर पूछे जाने वाले प्रश्न

इमेज क्रॉपर क्या है और मुझे इसकी आवश्यकता क्यों है?

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

इस इमेज क्रॉपर टूल का उपयोग कैसे करें?

1. अपलोड एरिया में इमेज ड्रैग करें या क्लिक करें। 2. क्रॉप एरिया को ड्रैग और हैंडल से एडजस्ट करें। 3. प्रीसेट आस्पेक्ट रेशियो चुनें। 4. रोटेशन/फ्लिप कंट्रोल इस्तेमाल करें। 5. आउटपुट फॉर्मेट चुनें। 6. 'क्रॉप लागू करें' क्लिक करें और डाउनलोड करें।

क्या मेरा इमेज डेटा सुरक्षित है?

आपकी इमेज 100% सुरक्षित हैं और ब्राउज़र से बाहर नहीं जातीं। सभी क्रॉपिंग HTML5 Canvas API का उपयोग करके क्लाइंट-साइड की जाती है।

कौन से आस्पेक्ट रेशियो उपलब्ध हैं?

मानक: 1:1, 4:3, 3:2, 16:9, 16:10। सोशल मीडिया: Instagram Portrait (4:5), Instagram Story (9:16), Facebook Post (1.91:1), Facebook Cover (2.63:1), Twitter/X Header (3:1)। कस्टम रेशियो भी उपलब्ध है।

कौन से इमेज फॉर्मेट समर्थित हैं?

इनपुट: PNG, JPEG, WebP, GIF। आउटपुट: PNG (लॉसलेस), JPEG (क्वालिटी कंट्रोल), WebP। GIF का पहला फ्रेम निकाला जाता है।

क्रॉप और रीसाइज़ में क्या अंतर है?

क्रॉप इमेज के हिस्से हटाता है। रीसाइज़ पूरी इमेज का आकार बदलता है। दोनों की ज़रूरत हो तो पहले क्रॉप करें फिर Image Resizer इस्तेमाल करें।

क्या क्रॉप से पहले इमेज को रोटेट या फ्लिप कर सकते हैं?

हां। 90° रोटेशन बटन, -45 से +45° फाइन रोटेशन स्लाइडर, और हॉरिज़ॉन्टल/वर्टिकल फ्लिप कंट्रोल उपलब्ध हैं।

अधिकतम फ़ाइल साइज़ और रेज़ोल्यूशन क्या है?

प्रति फ़ाइल 50MB और 16384 x 16384 पिक्सेल तक रेज़ोल्यूशन समर्थित है।

कोड उदाहरण

// Client-side image cropping using Canvas API
async function cropImage(file, cropX, cropY, cropWidth, cropHeight, options = {}) {
  const { quality = 0.92, format = null } = options;

  return new Promise((resolve, reject) => {
    const img = new Image();
    const url = URL.createObjectURL(file);

    img.onload = () => {
      URL.revokeObjectURL(url);

      const canvas = document.createElement('canvas');
      canvas.width = cropWidth;
      canvas.height = cropHeight;
      const ctx = canvas.getContext('2d');

      const outputType = format || file.type || 'image/png';
      if (outputType === 'image/jpeg') {
        ctx.fillStyle = '#ffffff';
        ctx.fillRect(0, 0, cropWidth, cropHeight);
      }

      ctx.drawImage(
        img,
        cropX, cropY, cropWidth, cropHeight,
        0, 0, cropWidth, cropHeight
      );

      canvas.toBlob(
        (blob) => {
          if (!blob) { reject(new Error('Crop failed')); return; }
          resolve({
            blob,
            width: cropWidth,
            height: cropHeight,
            originalWidth: img.naturalWidth,
            originalHeight: img.naturalHeight,
          });
        },
        outputType,
        outputType === 'image/png' ? undefined : quality
      );
    };

    img.onerror = () => { URL.revokeObjectURL(url); reject(new Error('Failed to load')); };
    img.src = url;
  });
}

// Crop to center square
const input = document.querySelector('input[type="file"]');
input.addEventListener('change', async (e) => {
  const file = e.target.files[0];
  const img = new Image();
  img.src = URL.createObjectURL(file);
  await new Promise((r) => (img.onload = r));

  const size = Math.min(img.naturalWidth, img.naturalHeight);
  const x = Math.round((img.naturalWidth - size) / 2);
  const y = Math.round((img.naturalHeight - size) / 2);

  const result = await cropImage(file, x, y, size, size, { format: 'image/png' });
  console.log(`Cropped: ${result.width}x${result.height}`);

  const url = URL.createObjectURL(result.blob);
  const a = document.createElement('a');
  a.href = url; a.download = 'cropped.png'; a.click();
  URL.revokeObjectURL(url);
});

संबंधित उपकरण