1. html
< canvas class = " canvas" id = " photo" type = " 2d" style = " width : 200px; height : 300px; " > </ canvas>
< button bindtap = " saveImage" > 保存</ button>
< image src = " {{tempFilePath}}" mode = " widthFix" />
2. js
data : { canvas : null , tempFilePath : ""
} , onLoad ( options ) { wx. createSelectorQuery ( ) . select ( '#photo' ) . fields ( { node : true , size : true } ) . exec ( ( res ) => { const canvas = res[ 0 ] . nodethis . setData ( { canvas} ) const ctx = canvas. getContext ( '2d' ) const width = res[ 0 ] . widthconst height = res[ 0 ] . heightconst dpr = wx. getWindowInfo ( ) . pixelRatiocanvas. width = width * dprcanvas. height = height * dprctx. scale ( dpr, dpr) ctx. clearRect ( 0 , 0 , width, height) ctx. fillStyle = '#3c9cff' ; ctx. fillRect ( 0 , 0 , 200 , 300 ) ; const image = canvas. createImage ( ) image. src = '/images/640.png' image. onload = ( ) => { ctx. drawImage ( image, 0 , 0 , 200 , 300 ) } } )
} ,
saveImage ( ) { wx. canvasToTempFilePath ( { canvasId : 'photo' , destWidth : 286 , destHeight : 417 , canvas : this . data. canvas, success : ( res ) => { this . setData ( { tempFilePath : res. tempFilePath} ) wx. saveImageToPhotosAlbum ( { filePath : res. tempFilePath, success : ( res ) => { wx. showToast ( { title : '保存成功' , } ) } } ) } } ) ;
} ,
3. css
.canvas { margin : auto; font-size : 0;
} .show { width : 200px; margin : auto; display : block;
}
4. 效果图