bskotu555
Member
How to click a button to select an image and determine if the image size is greater than 600KB. If it is, compress it. If not, load it directly into the ImageView1 control.Here is my current code:
B4A:
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 TargetSize As Int =600 * 1024
Dim FileSize As Long = File.Size(Dir, FileName)
If FileSize > TargetSize Then
ResizeImageBasedOnMaxFileSize(xui.LoadBitmap(Dir, FileName), TargetSize, xui.DefaultFolder, FileName)
ImageView1.Bitmap = LoadBitmap(xui.DefaultFolder,FileName)
Else
ImageView1.Bitmap = LoadBitmap(Dir, FileName)
End If
Else
ToastMessageShow("No Success :(",True)
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