Я делаю приложение для Android, которое делит изображения через социальные сети. Изображения находятся в макете , поэтому, когда пользователь нажимает изображение, он открывает еще одно действие, которое покажет это конкретное изображение (которое теперь можно использовать совместно). Изображения сохраняются в папке с возможностью выгрузки. Я хочу, чтобы изображение, которое я разделяю, было другим (less - 32px) чем тот, который пользователь просматривает в своей отдельной деятельности, которая больше (172px).Показать большое изображение, но поделиться меньшим изображением в android
Вот активность, в которой вы просматриваете полное изображение в:
public class FullImage extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.full_image);
Intent i = getIntent();
int position = i.getExtras().getInt("id");
ImageAdapter imageAdapter = new ImageAdapter(this);
ImageView imageView = (ImageView) findViewById(R.id.full_image_view);
imageView.setImageResource(imageAdapter.mThumbIds[position]);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
OutputStream output;
ImageView image = (ImageView) findViewById(R.id.full_image_view);
Bitmap bitmap = ((BitmapDrawable) image.getDrawable()).getBitmap();
File dir = new File(Environment.getExternalStorageDirectory() + "/images");
dir.mkdirs();
File file = new File(dir, "images.png");
try {
verifyStoragePermissions(this);
output = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, output);
output.flush();
output.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
switch (item.getItemId()) {
case R.id.action_share:
Uri uri = Uri.fromFile(file);
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
shareIntent.setType("image/png");
startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.action_share)));
case android.R.id.home:
onBackPressed();
return true;
}
return true;
}
// Storage Permissions
private static final int REQUEST_EXTERNAL_STORAGE = 1;
private static String[] PERMISSIONS_STORAGE = {
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
};
public static void verifyStoragePermissions(Activity activity) {
// Check if we have write permission
int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permission != PackageManager.PERMISSION_GRANTED) {
// We don't have permission so prompt the user
ActivityCompat.requestPermissions(
activity,
PERMISSIONS_STORAGE,
REQUEST_EXTERNAL_STORAGE
);
}
}
}
Использование Bitmap.createScaledBitmap для создания различных размеров растрового изображения с оригинала: https://developer.android.com/reference/android/graphics/Bitmap.html#createScaledBitmap(android.graphics.Bitmap, внутр , int, boolean) –
Вы можете извлечь миниатюру с основного изображения, которое будет меньше по размеру и ниже в разрешении –