1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- // @ts-nocheck
- // #ifndef UNI-APP-X && APP
- import {isBrowser} from '../isBrowser'
- class Image {
- currentSrc: string | null = null
- naturalHeight: number = 0
- naturalWidth: number = 0
- width: number = 0
- height: number = 0
- tagName: string = 'IMG'
- path: string = ''
- crossOrigin: string = ''
- referrerPolicy: string = ''
- onload: () => void = () => {}
- onerror: () => void = () => {}
- complete: boolean = false
- constructor() {}
- set src(src: string) {
- console.log('src', src)
- if(!src) {
- return this.onerror()
- }
- src = src.replace(/^@\//,'/')
- this.currentSrc = src
- uni.getImageInfo({
- src,
- success: (res) => {
- const localReg = /^\.|^\/(?=[^\/])/;
- // #ifdef MP-WEIXIN || MP-BAIDU || MP-QQ || MP-TOUTIAO
- res.path = localReg.test(src) ? `/${res.path}` : res.path;
- // #endif
- this.complete = true
- this.path = res.path
- this.naturalWidth = this.width = res.width
- this.naturalHeight = this.height = res.height
- this.onload()
- },
- fail: () => {
- this.onerror()
- }
- })
- }
- get src() {
- return this.currentSrc
- }
- }
- interface UniImage extends WechatMiniprogram.Image {
- complete?: boolean
- naturalHeight?: number
- naturalWidth?: number
- }
- /** 创建用于 canvas 的 img */
- export function createImage(canvas?: any): HTMLImageElement | UniImage {
- if(canvas && canvas.createImage) {
- return (canvas as WechatMiniprogram.Canvas).createImage()
- } else if(this && this['tagName'] == 'canvas' && !('toBlob' in this) || canvas && !('toBlob' in canvas)){
- return new Image()
- } else if(isBrowser) {
- return new window.Image()
- }
- return new Image()
- }
- // #endif
- // #ifdef UNI-APP-X && APP
- export function createImage():Image{
- // console.error('当前环境不支持')
- return new Image()
- }
- // #endif
|