bskotu555
Active 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 
				 
 
		 
 
		 
 
		 
 
		 
						
					 
 
		 
			 
			 
 
		 
 
		 
 
		 
 
		