Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
ShenghuoquanBusiness
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
bp
ShenghuoquanBusiness
Commits
fc62b35f
Commit
fc62b35f
authored
Jul 12, 2021
by
yinjiacheng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update 图片服务逻辑
parent
c15e0e34
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
94 additions
and
62 deletions
+94
-62
SelectImageParamsBean.kt
...main/java/com/yidian/common/bean/SelectImageParamsBean.kt
+0
-22
SelectedImageBean.kt
...src/main/java/com/yidian/common/bean/SelectedImageBean.kt
+0
-8
UploadImageBean.kt
...n/src/main/java/com/yidian/common/bean/UploadImageBean.kt
+0
-8
ImageService.kt
.../src/main/java/com/yidian/common/services/ImageService.kt
+94
-24
No files found.
CommonLib/Common/src/main/java/com/yidian/common/bean/SelectImageParamsBean.kt
deleted
100644 → 0
View file @
c15e0e34
package
com.yidian.common.bean
import
com.google.gson.annotations.SerializedName
import
java.io.Serializable
/**
* author: yinjiacheng
* date: 7/8/21 8:55 AM
* description: 图片服务-选择图片业务参数数据结构
*/
data class
SelectImageParamsBean
(
@SerializedName
(
"maxCount"
)
val
maxCount
:
Int
,
@SerializedName
(
"selectedImages"
)
val
selectedImages
:
List
<
SelectedImage
>
)
:
Serializable
data class
SelectedImage
(
@SerializedName
(
"id"
)
val
id
:
String
)
:
Serializable
CommonLib/Common/src/main/java/com/yidian/common/bean/SelectedImageBean.kt
deleted
100644 → 0
View file @
c15e0e34
package
com.yidian.common.bean
/**
* author: yinjiacheng
* date: 7/8/21 8:43 AM
* description: 图片服务-已选择图片数据结构
*/
data class
SelectedImageBean
(
val
id
:
String
,
val
photo_base64_str
:
String
)
CommonLib/Common/src/main/java/com/yidian/common/bean/UploadImageBean.kt
deleted
100644 → 0
View file @
c15e0e34
package
com.yidian.common.bean
/**
* author: yinjiacheng
* date: 7/8/21 8:43 AM
* description: 图片服务-已上传图片数据结构
*/
data class
UploadImageBean
(
val
id
:
String
,
val
image_uploaded_key
:
String
)
CommonLib/Common/src/main/java/com/yidian/common/services/ImageService.kt
View file @
fc62b35f
package
com.yidian.common.services
package
com.yidian.common.services
import
android.app.Activity
import
android.app.Activity
import
android.net.Uri
import
android.util.Base64
import
android.util.Base64
import
com.google.gson.Gson
import
com.google.gson.Gson
import
com.luck.picture.lib.PictureSelector
import
com.luck.picture.lib.PictureSelector
import
com.luck.picture.lib.config.PictureMimeType
import
com.luck.picture.lib.config.PictureMimeType
import
com.luck.picture.lib.entity.LocalMedia
import
com.luck.picture.lib.entity.LocalMedia
import
com.luck.picture.lib.listener.OnResultCallbackListener
import
com.luck.picture.lib.listener.OnResultCallbackListener
import
com.yidian.common.bean.SelectImageParamsBean
import
com.luck.picture.lib.manager.PictureCacheManager
import
com.yidian.common.bean.SelectedImageBean
import
com.yidian.common.YdBaseApplication
import
com.yidian.common.bean.UploadImageBean
import
com.yidian.common.utils.GlideEngine
import
com.yidian.common.utils.GlideEngine
import
com.yidian.common.utils.KS3Core
import
com.yidian.common.utils.KS3Core
import
com.yidian.xarc.xrouter.ResultResolver
import
com.yidian.xarc.xrouter.ResultResolver
...
@@ -19,6 +19,9 @@ import org.json.JSONArray
...
@@ -19,6 +19,9 @@ import org.json.JSONArray
import
org.json.JSONObject
import
org.json.JSONObject
import
java.io.File
import
java.io.File
import
java.io.FileInputStream
import
java.io.FileInputStream
import
java.io.FileOutputStream
import
java.util.*
import
kotlin.collections.ArrayList
/**
/**
* author: yinjiacheng
* author: yinjiacheng
...
@@ -71,9 +74,19 @@ class ImageService : ZapService() {
...
@@ -71,9 +74,19 @@ class ImageService : ZapService() {
private
lateinit
var
curTopActivity
:
Activity
private
lateinit
var
curTopActivity
:
Activity
/**
/**
*
内存
缓存已选择图片
* 缓存已选择图片
*/
*/
private
val
cacheSelectedImages
by
lazy
{
ArrayList
<
LocalMedia
>()
}
private
val
localSelectedImages
by
lazy
{
ArrayList
<
LocalSelectedImageBean
>()
}
/**
* 自定义压缩路径
*/
private
val
picCompressPath
by
lazy
{
YdBaseApplication
.
context
.
externalCacheDir
?.
absolutePath
+
"/picture_selector_compress/"
}
/**
* 自定义原图路径
*/
private
val
picOriginalPath
by
lazy
{
YdBaseApplication
.
context
.
externalCacheDir
?.
absolutePath
+
"/picture_selector_original/"
}
override
fun
onAction
(
path
:
String
,
action
:
String
,
params
:
Any
,
options
:
Any
,
resolver
:
ResultResolver
)
{
override
fun
onAction
(
path
:
String
,
action
:
String
,
params
:
Any
,
options
:
Any
,
resolver
:
ResultResolver
)
{
this
.
resolver
=
resolver
this
.
resolver
=
resolver
...
@@ -81,7 +94,7 @@ class ImageService : ZapService() {
...
@@ -81,7 +94,7 @@ class ImageService : ZapService() {
val
resolveParams
=
params
as
JSONObject
val
resolveParams
=
params
as
JSONObject
when
(
action
)
{
when
(
action
)
{
ACTION_SELECT_PIC
->
{
ACTION_SELECT_PIC
->
{
selectPic
(
gson
.
fromJson
(
resolveParams
.
toString
(),
SelectImageParamsBean
::
class
.
java
))
selectPic
(
resolveParams
.
optInt
(
"maxCount"
))
}
}
ACTION_TAKE_PIC
->
{
ACTION_TAKE_PIC
->
{
takePic
()
takePic
()
...
@@ -96,42 +109,57 @@ class ImageService : ZapService() {
...
@@ -96,42 +109,57 @@ class ImageService : ZapService() {
}
}
override
fun
onExit
()
{
override
fun
onExit
()
{
clearCache
()
}
}
override
fun
onInit
()
{
override
fun
onInit
()
{
File
(
picCompressPath
).
apply
{
if
(!
exists
())
{
mkdirs
()
}
}
File
(
picOriginalPath
).
apply
{
if
(!
exists
())
{
mkdirs
()
}
}
}
}
/**
/**
* 选择图片
* 选择图片
* @param maxCount 最多可选择的数量
*/
*/
private
fun
selectPic
(
params
:
SelectImageParamsBean
)
{
private
fun
selectPic
(
maxCount
:
Int
)
{
PictureSelector
.
create
(
curTopActivity
)
PictureSelector
.
create
(
curTopActivity
)
.
openGallery
(
PictureMimeType
.
ofImage
())
.
openGallery
(
PictureMimeType
.
ofImage
())
.
imageEngine
(
GlideEngine
.
createGlideEngine
())
.
imageEngine
(
GlideEngine
.
createGlideEngine
())
.
maxSelectNum
(
params
.
maxCount
)
.
maxSelectNum
(
maxCount
)
.
isWeChatStyle
(
true
)
.
isWeChatStyle
(
true
)
.
isCompress
(
true
)
.
isCompress
(
true
)
.
compressQuality
(
10
)
.
compressQuality
(
10
)
.
compressSavePath
(
picCompressPath
)
.
forResult
(
object
:
OnResultCallbackListener
<
LocalMedia
>
{
.
forResult
(
object
:
OnResultCallbackListener
<
LocalMedia
>
{
override
fun
onResult
(
result
:
MutableList
<
LocalMedia
>?)
{
override
fun
onResult
(
result
:
MutableList
<
LocalMedia
>?)
{
if
(
result
.
isNullOrEmpty
())
{
if
(
result
.
isNullOrEmpty
())
{
resolver
.
fail
(
CODE_ACTION_CANCEL
,
"select failed"
,
"选择失败"
)
resolver
.
fail
(
CODE_ACTION_CANCEL
,
"select failed"
,
"选择失败"
)
return
return
}
}
cacheSelectedImages
.
addAll
(
result
as
ArrayList
<
LocalMedia
>)
// 回传h5选择的图片的数据
val
picList
=
ArrayList
<
SelectedImageBean
>(
params
.
maxCount
)
val
selectedList
=
ArrayList
<
SelectedImageBean
>(
maxCount
)
result
.
forEach
{
result
.
forEach
{
picList
.
add
(
val
uuid
=
UUID
.
randomUUID
().
toString
()
val
inputStream
=
FileInputStream
(
it
.
compressPath
)
selectedList
.
add
(
SelectedImageBean
(
SelectedImageBean
(
it
.
id
.
toString
()
,
uuid
,
Base64
.
encodeToString
(
FileInputStream
(
it
.
compressPath
)
.
readBytes
(),
Base64
.
DEFAULT
)
Base64
.
encodeToString
(
inputStream
.
readBytes
(),
Base64
.
DEFAULT
)
)
)
)
)
inputStream
.
close
()
localSelectedImages
.
add
(
LocalSelectedImageBean
(
uuid
,
it
))
}
}
// 成功回传数据
// 成功回传数据
resolver
.
success
(
JSONArray
(
gson
.
toJson
(
pic
List
)))
resolver
.
success
(
JSONArray
(
gson
.
toJson
(
selected
List
)))
}
}
override
fun
onCancel
()
{
override
fun
onCancel
()
{
...
@@ -152,26 +180,30 @@ class ImageService : ZapService() {
...
@@ -152,26 +180,30 @@ class ImageService : ZapService() {
.
imageEngine
(
GlideEngine
.
createGlideEngine
())
.
imageEngine
(
GlideEngine
.
createGlideEngine
())
.
isCompress
(
true
)
.
isCompress
(
true
)
.
compressQuality
(
10
)
.
compressQuality
(
10
)
.
compressSavePath
(
picCompressPath
)
.
forResult
(
object
:
OnResultCallbackListener
<
LocalMedia
>
{
.
forResult
(
object
:
OnResultCallbackListener
<
LocalMedia
>
{
override
fun
onResult
(
result
:
MutableList
<
LocalMedia
>?)
{
override
fun
onResult
(
result
:
MutableList
<
LocalMedia
>?)
{
if
(
result
.
isNullOrEmpty
())
{
if
(
result
.
isNullOrEmpty
())
{
resolver
.
fail
(
CODE_ACTION_CANCEL
,
"take failed"
,
"拍照失败"
)
resolver
.
fail
(
CODE_ACTION_CANCEL
,
"take failed"
,
"拍照失败"
)
return
return
}
}
cacheSelectedImages
.
add
(
result
[
0
])
val
uuid
=
UUID
.
randomUUID
().
toString
()
val
inputStream
=
FileInputStream
(
result
[
0
].
compressPath
)
// 成功回传数据
// 成功回传数据
resolver
.
success
(
resolver
.
success
(
JSONArray
(
JSONArray
(
gson
.
toJson
(
gson
.
toJson
(
arrayListOf
(
arrayListOf
(
SelectedImageBean
(
SelectedImageBean
(
result
[
0
].
id
.
toString
()
,
uuid
,
Base64
.
encodeToString
(
FileInputStream
(
result
[
0
].
compressPath
)
.
readBytes
(),
Base64
.
DEFAULT
)
Base64
.
encodeToString
(
inputStream
.
readBytes
(),
Base64
.
DEFAULT
)
)
)
)
)
)
)
)
)
)
)
inputStream
.
close
()
localSelectedImages
.
add
(
LocalSelectedImageBean
(
uuid
,
result
[
0
]))
}
}
override
fun
onCancel
()
{
override
fun
onCancel
()
{
...
@@ -187,16 +219,18 @@ class ImageService : ZapService() {
...
@@ -187,16 +219,18 @@ class ImageService : ZapService() {
* @param id 需要上传的图片id
* @param id 需要上传的图片id
*/
*/
private
fun
uploadPic
(
id
:
String
)
{
private
fun
uploadPic
(
id
:
String
)
{
var
uploadPic
:
Local
Media
?
=
null
var
uploadPic
:
Local
SelectedImageBean
?
=
null
cache
SelectedImages
.
forEach
{
local
SelectedImages
.
forEach
{
// 遍历寻找指定图片
// 遍历寻找指定图片
if
(
id
==
it
.
id
.
toString
()
)
{
if
(
id
==
it
.
uuid
)
{
uploadPic
=
it
uploadPic
=
it
return
@forEach
return
@forEach
}
}
}
}
uploadPic
?.
let
{
uploadPic
?.
let
{
val
file
=
File
(
it
.
compressPath
)
// 将图片拷贝到沙盒
fileCopy
(
it
.
data
.
path
,
picOriginalPath
+
it
.
data
.
fileName
)
val
file
=
File
(
picOriginalPath
+
it
.
data
.
fileName
)
if
(!
file
.
exists
())
{
if
(!
file
.
exists
())
{
resolver
.
fail
(
CODE_FILE_NOT_EXIST
,
"file not exist"
,
"文件不存在"
)
resolver
.
fail
(
CODE_FILE_NOT_EXIST
,
"file not exist"
,
"文件不存在"
)
return
return
...
@@ -226,6 +260,42 @@ class ImageService : ZapService() {
...
@@ -226,6 +260,42 @@ class ImageService : ZapService() {
resolver
.
fail
(
CODE_FILE_UPLOAD_FAIL
,
"upload failed"
,
"上传失败"
)
resolver
.
fail
(
CODE_FILE_UPLOAD_FAIL
,
"upload failed"
,
"上传失败"
)
}
}
})
})
}
}
?:
resolver
.
fail
(
CODE_FILE_NOT_EXIST
,
"file not exist"
,
"文件不存在"
)
}
/**
* 文件拷贝
* @param fromUriStr 源文件uri
* @param targetPath 目标文件全路径
*/
private
fun
fileCopy
(
fromUriStr
:
String
?,
targetPath
:
String
?)
{
val
inputStream
=
YdBaseApplication
.
context
.
contentResolver
.
openInputStream
(
Uri
.
parse
(
fromUriStr
))
val
outputStream
=
FileOutputStream
(
targetPath
)
inputStream
?.
copyTo
(
outputStream
)
inputStream
?.
close
()
outputStream
.
close
()
}
/**
* 清理缓存
*/
private
fun
clearCache
()
{
PictureCacheManager
.
deleteAllCacheDirRefreshFile
(
YdBaseApplication
.
context
)
File
(
picOriginalPath
).
delete
()
}
}
/**
* 已选择的图片数据结构
*/
data class
LocalSelectedImageBean
(
val
uuid
:
String
,
val
data
:
LocalMedia
)
/**
* 已选择的图片数据结构 回传H5结果使用
*/
data class
SelectedImageBean
(
val
id
:
String
,
val
photo_base64_str
:
String
)
/**
* 已上传的图片数据结构 回传H5结果使用
*/
data class
UploadImageBean
(
val
id
:
String
,
val
image_uploaded_key
:
String
)
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment