Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-app
提交
a5cbcd41
U
uni-app
项目概览
DCloud
/
uni-app
4 个月 前同步成功
通知
727
Star
38705
Fork
3642
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
7
列表
看板
标记
里程碑
合并请求
1
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
7
Issue
7
列表
看板
标记
里程碑
合并请求
1
合并请求
1
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a5cbcd41
编写于
6月 18, 2019
作者:
Q
qiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: 解决 H5 端 uni.canvasToTempFilePath 接口 desWidth、desHeight 参数不生效的问题
上级
95656320
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
25 addition
and
60 deletion
+25
-60
src/core/helpers/protocol/canvas.js
src/core/helpers/protocol/canvas.js
+3
-3
src/core/service/api/context/canvas.js
src/core/service/api/context/canvas.js
+22
-57
未找到文件。
src/core/helpers/protocol/canvas.js
浏览文件 @
a5cbcd41
...
...
@@ -64,8 +64,8 @@ export const canvasPutImageData = {
}
const
fileType
=
{
PNG
:
'
PNG
'
,
JPG
:
'
JPG
'
PNG
:
'
png
'
,
JPG
:
'
jpeg
'
}
export
const
canvasToTempFilePath
=
{
...
...
@@ -103,7 +103,7 @@ export const canvasToTempFilePath = {
type
:
String
,
validator
(
value
,
params
)
{
value
=
(
value
||
''
).
toUpperCase
()
params
.
fileType
=
Object
.
values
(
fileType
).
indexOf
(
value
)
<
0
?
fileType
.
PNG
:
value
params
.
fileType
=
value
in
fileType
?
fileType
[
value
]
:
fileType
.
PNG
}
},
quality
:
{
...
...
src/core/service/api/context/canvas.js
浏览文件 @
a5cbcd41
import
createCallbacks
from
'
uni-helpers/callbacks
'
import
{
wrapper
,
pixelRatio
}
from
'
uni-helpers/hidpi
'
import
{
pixelRatio
}
from
'
uni-helpers/hidpi
'
const
canvasEventCallbacks
=
createCallbacks
(
'
canvasEvent
'
)
...
...
@@ -255,17 +255,10 @@ var methods3 = ['setFillStyle', 'setTextAlign', 'setStrokeStyle', 'setGlobalAlph
]
var
tempCanvas
function
getTempCanvas
(
width
,
height
)
{
function
getTempCanvas
()
{
if
(
!
tempCanvas
)
{
tempCanvas
=
document
.
createElement
(
'
canvas
'
)
}
if
(
typeof
width
!==
'
undefined
'
&&
typeof
height
!==
'
undefined
'
)
{
if
(
tempCanvas
.
width
!==
width
||
tempCanvas
.
height
!==
height
)
{
tempCanvas
.
width
=
width
/
pixelRatio
tempCanvas
.
height
=
height
/
pixelRatio
wrapper
(
tempCanvas
)
}
}
return
tempCanvas
}
...
...
@@ -857,56 +850,28 @@ export function canvasToTempFilePath ({
})
return
}
var
c
Width
=
(
typeof
destWidth
!==
'
undefined
'
)
?
(
destWidth
*
pixelRatio
)
:
data
.
width
var
cHeight
=
(
typeof
destHeight
!==
'
undefined
'
)
?
(
destHeight
*
pixelRatio
)
:
data
.
height
var
canvas
=
getTempCanvas
(
cWidth
,
cHeight
)
var
c
anvas
=
getTempCanvas
()
canvas
.
width
=
data
.
width
canvas
.
height
=
data
.
height
var
c2d
=
canvas
.
getContext
(
'
2d
'
)
c2d
.
putImageData
(
imgData
,
0
,
0
,
0
,
0
,
imgData
.
width
,
imgData
.
height
)
var
imageType
=
(
fileType
?
fileType
.
toLowerCase
()
:
'
png
'
)
if
(
imageType
===
'
jpg
'
)
{
imageType
=
'
jpeg
'
}
var
dCanvas
var
isDest
=
(
typeof
destWidth
!==
'
undefined
'
&&
typeof
destHeight
!==
'
undefined
'
)
if
(
isDest
)
{
dCanvas
=
document
.
createElement
(
'
canvas
'
)
dCanvas
.
width
=
destWidth
dCanvas
.
height
=
destHeight
}
else
{
dCanvas
=
canvas
.
cloneNode
(
true
)
}
var
dCtx
=
dCanvas
.
getContext
(
'
2d
'
)
if
(
imageType
===
'
jpeg
'
)
{
dCtx
.
fillStyle
=
'
#fff
'
dCtx
.
fillRect
(
0
,
0
,
dCanvas
.
width
,
dCanvas
.
height
)
}
if
(
isDest
)
{
dCtx
.
drawImageByCanvas
(
canvas
,
0
,
0
,
canvas
.
width
,
canvas
.
height
,
0
,
0
,
destWidth
,
destHeight
,
true
)
}
else
{
dCtx
.
drawImage
(
canvas
,
0
,
0
)
c2d
.
putImageData
(
imgData
,
0
,
0
)
var
base64
=
canvas
.
toDataURL
(
'
image/png
'
)
var
img
=
new
Image
()
img
.
onload
=
function
()
{
var
width
=
canvas
.
width
=
typeof
destWidth
===
'
number
'
?
destWidth
:
imgData
.
width
*
pixelRatio
var
height
=
canvas
.
height
=
typeof
destHeight
===
'
number
'
?
destHeight
:
imgData
.
height
*
pixelRatio
if
(
fileType
===
'
jpeg
'
)
{
c2d
.
fillStyle
=
'
#fff
'
c2d
.
fillRect
(
0
,
0
,
width
,
height
)
}
c2d
.
drawImage
(
img
,
0
,
0
,
img
.
width
,
img
.
height
,
0
,
0
,
width
,
height
)
base64
=
canvas
.
toDataURL
(
`image/
${
fileType
}
`
,
qualit
)
invoke
(
callbackId
,
{
errMsg
:
'
canvasToTempFilePath:ok
'
,
tempFilePath
:
base64
})
}
var
base64
=
dCanvas
.
toDataURL
(
`image/
${
imageType
}
`
,
qualit
)
invoke
(
callbackId
,
{
errMsg
:
'
canvasToTempFilePath:ok
'
,
tempFilePath
:
base64
})
// TODO base64返回的是高清图,如果将img通过drawImage画到等宽高的canvas会出现显示不全问题, drawImage在次做了高清处理
// var img = new Image()
// img.onload = function () {
// canvas.width = destWidth || imgData.width
// canvas.height = destHeight || imgData.height
// c2d.drawImage(img, 0, 0)
// base64 = canvas.toDataURL(`image/jpeg`, qualit)
// invoke(callbackId, {
// errMsg: 'canvasToTempFilePath:ok',
// tempFilePath: base64
// })
// }
// img.src = base64
img
.
src
=
base64
})
operateCanvas
(
canvasId
,
pageId
,
'
getImageData
'
,
{
x
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录