B4J Code Snippet Convert .png file to .ico

B4X:
' IMPORTANT: this didn't seem to work with png files sized 512x512.
' It did work with 256x256; I didn't try any other sizes.
Private Sub PNGtoICO(pngDir As String, pngFile As String, icoDir As String, icoFile As String)

    ' Dependencies:
    ' - #AdditionalJar: image4j-0.7.2 (from https://image4j.sourceforge.net)
    ' - Library: JavaObject

    ' Code based on:
    ' - https://www.b4x.com/android/forum/threads/solved-how-to-create-jpeg-output-stream.83830/#post-531280
    ' - https://zetcode.com/articles/javaico/

    Dim img As Image
    img.Initialize(pngDir, pngFile)
    Dim outputStream1 As OutputStream = File.OpenOutput(icoDir, icoFile, False)
    Me.as(JavaObject).RunMethod("saveImageAsICO", Array(img, outputStream1))
    outputStream1.Close

End Sub

#If Java
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.io.OutputStream;
    import javafx.scene.image.Image;
    import javafx.embed.swing.SwingFXUtils;
    import net.sf.image4j.codec.ico.ICOEncoder;

    public static void saveImageAsICO(Image img,
            OutputStream stream) throws IOException {
        BufferedImage buffimg = SwingFXUtils.fromFXImage(img, null);
        ICOEncoder.write(buffimg, stream);
    }
#End If
 
Top