我想使用 vuetify 驗證圖片寬度和高度。我編寫了一個函數來檢查圖像並與條件進行比較。雖然我可以檢查圖像的寬度、高度,但規則總是錯誤
<v-file-input :id="'file-input-' + label" ref="fileInput" :rules="rules.minResolution" class="file-input-upload pt-0 pb-2" prepend-icon="" :error-messages="errorMessages" @change="onChange" > <template #message="{ message }"> {{ showMessages($t(message), $t(label), maxSize) }} </template> <template v-if="imageError !== ''"> {{ $t(imageError) }} </template> </v-file-input>
這是匯出功能
export function minResolution(width, height, error) { return file => ( file && (new File(file, width, height) === true)) || error }
function File(file, width , height) { const reader = new FileReader() reader.readAsDataURL(file); reader.onload = evt => { const img = new Image(); img.onload = () => { if (img.width >= width && img.height >= height) { alert(1) return true; } } img.src = evt.target.result; } return false; }
抱歉我的英文太差了
P粉4038048442024-03-30 10:39:18
我不知道你的minResolution
是否可以是異步的,但這是唯一的方法,帶有非同步驗證
export async function minResolution(width, height, error) { return file => ( file && (await check_image_dimensions(file, width, height) === true)) || error }
function check_image_dimensions(file, width , height) { const reader = new FileReader(); reader.readAsDataURL(file); return new Promise(resolve => { reader.onload = evt => { const img = new Image(); img.onload = () => { resolve(img.width >= width && img.height >= height); } img.src = evt.target.result; } }); }