public class MainActivity extends AppCompatActivity {
ImageView imageView;
ImageView imageViewSaved;
Drawable drawable;
Bitmap bitmap;
BitmapFactory.Options options;
InputStream inputStream;
OutputStream outputStream;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = (ImageView) MainActivity.this.findViewById(R.id.imageView);
imageViewSaved = (ImageView) MainActivity.this.findViewById(R.id.imageViewSaved);
// カラー
MainActivity.this.findViewById(R.id.buttonResource1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// リソース ID
imageView.setImageResource(R.drawable.sample);
}
});
// モノクロ
MainActivity.this.findViewById(R.id.buttonResource2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
drawable = MainActivity.this.getDrawable(R.drawable.sample_mono);
Log.i("lightbox", drawable.getIntrinsicWidth()+""); // Nexus 4 : 800, Nexus S : 600 (注) setDensity 後変化します
bitmap = ((BitmapDrawable)drawable).getBitmap();
Log.i("lightbox", bitmap.getWidth()+""); // Nexus 4 : 800, Nexus S : 600
Log.i("lightbox", bitmap.getDensity()+""); // Nexus 4 : 320, Nexus S : 240
// 密度を倍にすれば、表示サイズは半分に
bitmap.setDensity(640);
imageView.setImageBitmap(bitmap);
}
});
// スケッチ
MainActivity.this.findViewById(R.id.buttonResource3).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
bitmap = BitmapFactory.decodeResource(MainActivity.this.getResources(), R.drawable.sample_sketch);
Log.i("lightbox", bitmap.getWidth()+""); // Nexus 4 : 800, Nexus S : 600
Log.i("lightbox", bitmap.getDensity()+""); // Nexus 4 : 320, Nexus S : 240
// 密度を倍にすれば、表示サイズは半分に
bitmap.setDensity(640);
imageView.setImageBitmap(bitmap);
}
});
// カラー
MainActivity.this.findViewById(R.id.buttonSave1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
options = new BitmapFactory.Options();
options.inScaled = false;
bitmap = BitmapFactory.decodeResource(MainActivity.this.getResources(), R.drawable.sample,options);
Log.i("lightbox", bitmap.getWidth()+""); // 400
Log.i("lightbox", bitmap.getDensity()+""); // 160
try {
// 書き込みするファイル名
outputStream = MainActivity.this.openFileOutput("sample.png", MODE_PRIVATE);
// PNG なので quality は無視される( クオリティ維持のため PNG として保存 )
bitmap.compress(Bitmap.CompressFormat.PNG, 0, outputStream);
outputStream.close();
inputStream = MainActivity.this.openFileInput("sample.png");
bitmap = BitmapFactory.decodeStream(inputStream);
inputStream.close();
Log.i("lightbox", bitmap.getWidth()+""); // 400
Log.i("lightbox", bitmap.getDensity()+""); // Nexus 4 : 320, Nexus S : 240
imageViewSaved.setImageBitmap(bitmap);
} catch (Exception e) {
e.printStackTrace();
}
}
});
// モノクロ
MainActivity.this.findViewById(R.id.buttonSave2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
options = new BitmapFactory.Options();
options.inScaled = false;
bitmap = BitmapFactory.decodeResource(MainActivity.this.getResources(), R.drawable.sample_mono,options);
Log.i("lightbox", bitmap.getWidth()+""); // 400
Log.i("lightbox", bitmap.getDensity()+""); // 160
try {
// 書き込みするファイル名
outputStream = MainActivity.this.openFileOutput("sample_mono.png", MODE_PRIVATE);
// PNG なので quality は無視される( クオリティ維持のため PNG として保存 )
bitmap.compress(Bitmap.CompressFormat.PNG, 0, outputStream);
outputStream.close();
inputStream = MainActivity.this.openFileInput("sample_mono.png");
drawable = new BitmapDrawable(MainActivity.this.getResources(), inputStream);
inputStream.close();
Log.i("lightbox", drawable.getIntrinsicWidth()+""); // Nexus 4 : 200, Nexus S : 267
bitmap = ((BitmapDrawable)drawable).getBitmap();
Log.i("lightbox", bitmap.getWidth()+""); // 400
Log.i("lightbox", bitmap.getDensity()+""); // Nexus 4 : 320, Nexus S : 240
imageViewSaved.setImageBitmap(bitmap);
} catch (Exception e) {
e.printStackTrace();
}
}
});
// スケッチ
MainActivity.this.findViewById(R.id.buttonSave3).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
options = new BitmapFactory.Options();
options.inScaled = false;
bitmap = BitmapFactory.decodeResource(MainActivity.this.getResources(), R.drawable.sample_sketch,options);
Log.i("lightbox", bitmap.getWidth()+""); // 400
Log.i("lightbox", bitmap.getDensity()+""); // 160
try {
// 書き込みするファイル名
outputStream = MainActivity.this.openFileOutput("sample_sketch.jpg", MODE_PRIVATE);
// 90% JPEGとして保存
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, outputStream);
outputStream.close();
inputStream = MainActivity.this.openFileInput("sample_sketch.jpg");
bitmap = BitmapFactory.decodeStream(inputStream);
inputStream.close();
Log.i("lightbox", bitmap.getWidth()+""); // 400
Log.i("lightbox", bitmap.getDensity()+""); // Nexus 4 : 320, Nexus S : 240
// 大きく
bitmap.setDensity(160);
imageViewSaved.setImageBitmap(bitmap);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}