2016-05-04 4 views
0

javafxports android appのjpgファイルにjavafx.image.Imageを保存する方法はありますか? 私が創設した唯一のImageIOはアンドロイドではサポートされていませんが、私はAPIを見つけることができません。 私はいくつかの助け 例コード必要があります:あなたは、ファイルに保存するためにandroid.graphics.Bitmapを使用することができますjavafxports android appのjpgファイルにjavafx.image.Imageを保存する方法はありますか?

@Override 公共ボイド開始(ステージprimaryStage)のAndroid上で{

StackPane root = new StackPane(); 

    Scene scene = new Scene(root, 400, 450); 
    WritableImage wim = new WritableImage(300, 250); 



    Canvas canvas = new Canvas(300, 250); 
    GraphicsContext gc = canvas.getGraphicsContext2D(); 
    drawShapes(gc); 
    canvas.snapshot(null, wim); 
    root.getChildren().add(canvas); 

    primaryStage.setTitle("Hello World!"); 
    primaryStage.setScene(scene); 
    primaryStage.show(); 

    File file = new File("CanvasImage.png"); 


    try { 

     //on desktop ImageIO.write(SwingFXUtils.fromFXImage(wim, null), "png", file); 
// on android ?????????? 

    } catch (Exception s) { 
    } 
} 
+0

明確にすることができます:どこから画像を取得しますか?どこにイメージを保存しますか? GoNative [サンプル](http://gluonhq.com/support/samples/)を見たことがありますか? Androidパッケージの画像を扱い、外部のストレージ公開ディレクトリに保存します。 –

+0

私は質問をいくつかのコードで変更してリクエストをより良く説明しました –

+0

キャンバスのスナップショットを作成し、その結果をpngファイルに保存したいと考えています。この画像をどこに保存する必要がありますか?プライベートストレージ(後で検索したい場合に備えて)、またはパブリックストレージ(それをダウンロードできるようにする)? –

答えて

1

を:

public void saveImageToPngFile(File file, WritableImage image) { 
    int width = (int) image.getWidth(); 
    int height = (int) image.getHeight(); 
    Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); 
    try { 

     PixelReader pr = image.getPixelReader(); 
     IntBuffer buffer = IntBuffer.allocate(width * height); 
     pr.getPixels(0, 0, width, height, PixelFormat.getIntArgbInstance(), buffer, width); 
     bitmap.setPixels(buffer.array(), 0, width, 0, 0, width, height); 

     FileOutputStream out = new FileOutputStream(file); 
     bitmap.compress(Bitmap.CompressFormat.PNG, 100, out); 
     out.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
関連する問題