@@ -24,9 +24,9 @@ abstract class BaseUriBuilder() : BaseActivityBuilder(), Download<BaseUriBuilder
2424
2525 private val uriSet: MutableSet <Uri > = mutableSetOf ()
2626 private val fileSet: MutableSet <File > = mutableSetOf ()
27+ private val bitmapSet: MutableSet <Bitmap > = mutableSetOf ()
2728
2829 private val downloadBuilder by lazy { DownloadBuilder (this ) }
29- private var bitmapIndex = 0
3030 private var localFilesDir: File ? = null
3131
3232 companion object {
@@ -156,31 +156,31 @@ abstract class BaseUriBuilder() : BaseActivityBuilder(), Download<BaseUriBuilder
156156 * @return BaseUriBuilder for method chaining
157157 */
158158 fun bitmap (vararg bitmaps : Bitmap ): BaseUriBuilder {
159- bitmaps.forEach { bitmap ->
160- fileSet.add(bitmap.toFile(bitmapIndex))
161- bitmapIndex++
162- }
159+ bitmapSet.addAll(bitmaps)
163160 return this
164161 }
165162
166- private fun Bitmap.toFile (fileIndex : Int ): File {
167- return File (localFilesDir , DEFAULT_IMAGE_FILE_NAME + fileIndex + DEFAULT_IMAGE_FILE_TYPE ).apply {
168- val fileOutputStream = FileOutputStream (this )
169- compress(Bitmap .CompressFormat .JPEG , 100 , fileOutputStream )
170- fileOutputStream.close()
163+ private fun Bitmap.toFile (context : Context , fileIndex : Int ): File {
164+ return File (getLocalFilesDir(context) , DEFAULT_IMAGE_FILE_NAME + fileIndex + DEFAULT_IMAGE_FILE_TYPE ).apply {
165+ FileOutputStream (this ).use {
166+ compress(Bitmap .CompressFormat .JPEG , 90 , it )
167+ }
171168 }
172169 }
173170
174171 private fun Bitmap.toUri (context : Context , fileIndex : Int ): Uri {
175- return FileProvider .getLocalFileUri(context, toFile(fileIndex))
172+ return FileProvider .getLocalFileUri(context, toFile(context, fileIndex))
176173 }
177174
178- protected fun getFileOrUriSetSize (): Int = uriSet.size + fileSet.size
175+ protected fun getFileOrUriSetSize (): Int = uriSet.size + fileSet.size + bitmapSet.size
179176
180177 protected fun getFirstUri (context : Context ): Uri {
181178 if (uriSet.isEmpty()) {
182179 if (fileSet.isEmpty()) {
183- throw IllegalStateException (" Uri list is empty" )
180+ if (bitmapSet.isEmpty()) {
181+ throw IllegalStateException (" Uri list is empty" )
182+ }
183+ return bitmapSet.first().toUri(context, 0 )
184184 }
185185 return toUri(context, fileSet.first())
186186 }
@@ -191,6 +191,7 @@ abstract class BaseUriBuilder() : BaseActivityBuilder(), Download<BaseUriBuilder
191191 val uriSet = mutableSetOf<Uri >()
192192 uriSet.addAll(this .uriSet)
193193 uriSet.addAll(fileSet.map { toUri(context, it) })
194+ uriSet.addAll(bitmapSet.mapIndexed { index, bitmap -> bitmap.toUri(context, index) })
194195 return uriSet
195196 }
196197
0 commit comments