私はasstetsフォルダから画像をコピーし、それを私のパッケージに貼り付けるだけです。最終画像には何も表示されません。私がペイントで絵を描こうとすると、「これは有効なビットマップファイルではありません」と表示されます。私のプログラムでAndroid:イメージのコピー&ペーストが動作しません!
は、私がこのように元の画像を読み取るために開始します。
private void copyImage()
{
AssetManager am = getResources().getAssets();
try{
image = BitmapFactory.decodeStream(am.open("tasnim.png"));
imWidth = image.getWidth();
imHeight = image.getHeight();
}
catch(IOException e){
e.printStackTrace();
System.out.println("Error accoured!");
}
}
次、私は画像のピクセルを取得したり、ピクセルを抽出し、整数(rgbstream)の配列内のピクセルを節約できます。
private void getPixelsOfImage()
{
rgbStream = new int[imWidth * imHeight];
image.getPixels(rgbStream, 0, imWidth, 0, 0, imWidth, imHeight);
}
は最終的に、私は、私のパッケージにそれを保存したい
private void createPicture()
{
contextPath = context.getFilesDir().getAbsolutePath();
String path = contextPath + "/" + picName;
try{
FileOutputStream fos = new FileOutputStream(path);
DataOutputStream dos = new DataOutputStream(fos);
for(int i=0; i<rgbStream.length; i++)
dos.writeByte(rgbStream[i]);
dos.flush();
dos.close();
fos.close();
}
catch(IOException e){
System.out.println("IOException : " + e);
}
System.out.println("Picture Created.");
}
コードは、罰金が、結果に動作し、何もありません! :( DDMSをチェックすると、新しいファイルが作成され、すべてのピクセルが保存されます(このファイルのサイズは13300で、元の画像のサイズは100 * 133です)。私のデスクトップにそれを保存することができます。
あなたはどう思いますか?私のコードに問題はありますか? ありがとう
私はほとんど肯定的ですが、それはpngの仕組みではありません。 – Falmarri
「何もない」とは何かを説明できますか?ファイルはありますか?それはどれくらい大きいですか?あなたが16進ダンプを見るときの内容は何ですか?どのように開いていますか? – EboMike
@Falmarri:それらはPNGファイルであるはずですか?コードが生の画像ファイルを書き出そうとしているようです。 – EboMike