Private Sub Button1_Click
CC.Show("image/*", "Choose image")
'CC.Show("audio/*", "Choose audio file")
End Sub
Sub CC_Result (Success As Boolean, Dir As String, FileName As String)
If Success = True Then
Dim pic As String=Dir & "/" & FileName
Dim ImagePath As String = pic
If IsImageLargerThanTargetSize(ImagePath, TargetSize) Then' 判断图片是否大于 600KB
ResizeImageBasedOnMaxFileSize(pic, 600 * 1024, xui.DefaultFolder, FileName)
ImageView1.Bitmap = LoadBitmap(xui.DefaultFolder,"compressed_image.jpg")
Else
ImageView1.Bitmap = LoadBitmap(Dir, FileName)
End If
Else
ToastMessageShow("No Success :(",True)
End If
End Sub
Private Sub IsImageLargerThanTargetSize(ImagePath As String, TargetSize As Int) As Boolean
Dim FileSize As Long = File.Size(File.DirInternal, ImagePath)
If FileSize > TargetSize Then
Return True
Else
Return False
End If
End Sub
Private Sub ResizeImageBasedOnMaxFileSize (Img As B4XBitmap, MaxSize As Long, OutputFolder As String, OutputFile As String)'图片压缩算法
Dim Quality As Int = 100
Dim Size As Long = MaxSize + 1
Do While Size > MaxSize And Quality >= 10
Dim out As OutputStream = File.OpenOutput(OutputFolder, OutputFile, False)
Img.WriteToStream(out, Quality, "JPEG")
out.Close
Size = File.Size(OutputFolder, OutputFile)
Log($"Quality: ${Quality}%, Size: $1.0{Size / 1024}kb"$)
Quality = Quality - 5
Loop
End Sub