PNG から JPEG に変換し、次に JPEG から PNG に変換するときに、画像のサイズに問題があります。
public void onClick(View v) {
String imageFileName = "/sdcard/Penguins2.png";
File imageFile = new File(imageFileName);
if (imageFile.exists()) {
// Load the image from file
myBitmap = BitmapFactory.decodeFile(imageFileName);
// Display the image in the image viewer
myImageView = (ImageView) findViewById(R.id.my_image_view);
if (myImageView != null) {
myImageView.setImageBitmap(myBitmap);
}
}
}
変換:
private void processImage() {
try {
String outputPath = "/sdcard/Penguins2.jpg";
int quality = 100;
FileOutputStream fileOutStr = new FileOutputStream(outputPath);
BufferedOutputStream bufOutStr = new BufferedOutputStream(
fileOutStr);
myBitmap.compress(CompressFormat.JPEG, quality, bufOutStr);
bufOutStr.flush();
bufOutStr.close();
} catch (FileNotFoundException exception) {
Log.e("debug_log", exception.toString());
} catch (IOException exception) {
Log.e("debug_log", exception.toString());
}
myImageView.setImageBitmap(myBitmap);
この操作を処理した後、次の行を変更するだけです。
String imageFileName = "/sdcard/Penguins2.png";
に
String imageFileName = "/sdcard/Penguins2.jpg";
と
String outputPath = "/sdcard/Penguins2.jpg";
(...)
myBitmap.compress(CompressFormat.JPEG, quality, bufOutStr);
に
String outputPath = "/sdcard/Penguins2.png";
(...)
myBitmap.compress(CompressFormat.PNG, quality, bufOutStr);
画像のサイズが 585847 から 531409 に変更されました (DDMS で)
なんらかの画像処理にロスレスなPNGを使いたいので、そういうことをしたいです。次に、画像を jpeg に変換して MMS として送信します。よくわかりませんが、JPEG は MMS のすべてのデバイスでサポートされている唯一の形式だと思います。受信者は画像を開き、データを失うことなくpngに変換します。