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;
}
// بارگذاری را ادامه بده
}رفتار
- اگر هم
widthو همheightرا بدهید، هر دو باید بخوانند. اگر هیچکدام را ندهید، تنها وارسی میشود که فایل همچون تصویر رمزگشایی میشود یا نه. - شکست در رمزگشایی رد میکند (فایل خراب، چیزی که تصویر نیست)، بهجای آنکه Promise را در انتظار رها کند.
- نشانی شیء همیشه آزاد میشود، چه کار بگیرد و چه نگیرد؛ پس وارسی فایلهای فراوان، نشانیهای blob را تا ترک صفحه نشت نمیدهد.
- تنها در مرورگر: در SSR با خطایی روشن رد میکند.
در ۰٫۳ درست شد
پیشتر شرط دوم روی شرط نخست را مینوشت، پس دادن همزمان width و height باعث میشد width خاموشانه نادیده گرفته شود؛ onerror نبود، پس فایل خراب Promise را تا ابد در انتظار میگذاشت؛ و نگهبان SSR پس از فراخوانی reject بازنمیگشت، به راهش ادامه میداد، به window دست میزد و ReferenceError پرتاب میکرد.
یادداشتها
ناهمگام است: Promise برمیگرداند، پس با
awaitیا.then()رسیدگی کنید.دربارهٔ آرگومانها:
- اگر تنها
widthرا بدهید، تنها پهنا وارسی میشود - اگر تنها
heightرا بدهید، تنها بلندا وارسی میشود - اگر هر دو را بدهید، هر دو باید بخوانند
محیط سرور: در محیطهای سرور (بدون شیء
window) رد میکند.پاکسازی حافظه: نشانی شیءِ ساختهشده را خودِ تابع در درون میروبد و نیازی به کار دستی نیست.
کاربرد: معمولاً برای وارسی ابعاد پیش از بارگذاری فایل و وارسی اندازهٔ تصویر نمایه به کار میرود.