Skip to content

isImageSize

وارسی می‌کند که ابعاد یک فایل تصویری با خواسته‌ها می‌خواند یا نه.

API

isImageSize

بازگشت

آرگومانتوضیحنوع
Promise<boolean>Promiseای که با «ابعاد می‌خواند یا نه» برآورده می‌شودPromise

پارامترها

پارامترتوضیحنوعپیش‌فرض
fileشیء فایل تصویرFileالزامی
widthپهنای مورد انتظار (اختیاری)numberاختیاری
heightبلندای مورد انتظار (اختیاری)numberاختیاری

نمونه

کاربرد پایه

js
import { isImageSize } from 'ranuts';

const fileInput = document.getElementById('fileInput');
fileInput.addEventListener('change', async (e) => {
  const file = e.target.files[0];
  if (file) {
    try {
      // وارسی اینکه پهنا ۸۰۰ است یا نه
      const isValid = await isImageSize(file, 800);
      if (isValid) {
        console.log('پهنای تصویر می‌خواند');
      } else {
        console.log('پهنای تصویر نمی‌خواند');
      }
    } catch (error) {
      console.error('وارسی شکست خورد:', error);
    }
  }
});

وارسی پهنا و بلندا

js
import { isImageSize } from 'ranuts';

async function validateImage(file) {
  // وارسی اینکه ۸۰۰x۶۰۰ است یا نه
  const isValid = await isImageSize(file, 800, 600);
  return isValid;
}

وارسی تنها بلندا

js
import { isImageSize } from 'ranuts';

const isValid = await isImageSize(file, undefined, 600);
// تنها وارسی می‌کند که بلندا ۶۰۰ است یا نه

وارسی پیش از بارگذاری

js
import { isImageSize } from 'ranuts';

async function handleFileUpload(file) {
  const isValid = await isImageSize(file, 1920, 1080);
  if (!isValid) {
    alert('ابعاد تصویر باید ۱۹۲۰x۱۰۸۰ باشد');
    return;
  }
  // بارگذاری را ادامه بده
}

رفتار

  1. اگر هم width و هم height را بدهید، هر دو باید بخوانند. اگر هیچ‌کدام را ندهید، تنها وارسی می‌شود که فایل همچون تصویر رمزگشایی می‌شود یا نه.
  2. شکست در رمزگشایی رد می‌کند (فایل خراب، چیزی که تصویر نیست)، به‌جای آنکه Promise را در انتظار رها کند.
  3. نشانی شیء همیشه آزاد می‌شود، چه کار بگیرد و چه نگیرد؛ پس وارسی فایل‌های فراوان، نشانی‌های blob را تا ترک صفحه نشت نمی‌دهد.
  4. تنها در مرورگر: در SSR با خطایی روشن رد می‌کند.

در ۰٫۳ درست شد

پیش‌تر شرط دوم روی شرط نخست را می‌نوشت، پس دادن هم‌زمان width و height باعث می‌شد width خاموشانه نادیده گرفته شود؛ onerror نبود، پس فایل خراب Promise را تا ابد در انتظار می‌گذاشت؛ و نگهبان SSR پس از فراخوانی reject بازنمی‌گشت، به راهش ادامه می‌داد، به window دست می‌زد و ReferenceError پرتاب می‌کرد.

یادداشت‌ها

  1. ناهمگام است: Promise برمی‌گرداند، پس با await یا .then() رسیدگی کنید.

  2. دربارهٔ آرگومان‌ها:

  • اگر تنها width را بدهید، تنها پهنا وارسی می‌شود
  • اگر تنها height را بدهید، تنها بلندا وارسی می‌شود
  • اگر هر دو را بدهید، هر دو باید بخوانند
  1. محیط سرور: در محیط‌های سرور (بدون شیء window) رد می‌کند.

  2. پاک‌سازی حافظه: نشانی شیءِ ساخته‌شده را خودِ تابع در درون می‌روبد و نیازی به کار دستی نیست.

  3. کاربرد: معمولاً برای وارسی ابعاد پیش از بارگذاری فایل و وارسی اندازهٔ تصویر نمایه به کار می‌رود.

منتشرشده تحت مجوز MIT.