2016-06-07 2 views
0

В настоящее время у меня есть несколько изображений (все 100x100 в размерности, очень маленькие), которые вытаскиваются из сервера MySQL MySQL и отображаются в моем приложении. Все работает и ведет себя так, как я хочу. Тем не менее, я заметил, что когда я делюсь изображениями с WhatsApp, Messenger или другими приложениями в социальных сетях (у меня есть кнопки в приложении, которые используют изображение), изображения взорваны, как будто они слишком малы для обмена, поэтому социальные медиа приложения изменяют их размеры, что отражает пиксели изображений, поскольку исходные размеры 100х100.Изменить размер изображения перед тем, как открыть (вставить холст)

Во избежание изменения размеров изображений у меня возникла идея, но не знаю, возможно ли это или как это сделать. Можно ли разместить исходное изображение на белом холсте размером 300x300 в размерах во время акции? Таким образом, изображение будет 300x300, но с белым фоном и, мы надеемся, будет правильно распределяться без изменения размера.

CardPreviewActivity

public class CardPreviewActivity extends AppCompatActivity { 

BottomSheetLayout bottomSheetLayout; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.preview_activity); 
    final SuperHero superHero = App.self.previewRequestedSuperHeroObject; 
    // SET IMAGE 
    ImageLoader imageLoader = CustomVolleyRequest.getInstance(this).getImageLoader(); 
    NetworkImageView heroPreviewImg = (NetworkImageView) findViewById(R.id.imageViewHero); 
    heroPreviewImg.setImageUrl(superHero.getImageUrl(), imageLoader); 

    // SET NAME 
    TextView heroName = (TextView) findViewById(R.id.preview_super_hero_name); 
    heroName.setText("Name: " + superHero.getName()); 

    // SET DIRECTLINK 
    TextView heroDirectLink = (TextView) findViewById(R.id.preview_super_hero_directlink); 
    heroDirectLink.setText("Direct link: " + superHero.getDirectLink()); 


    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    getSupportActionBar().setTitle(superHero.getName()); // set the top title 

    bottomSheetLayout = (BottomSheetLayout) findViewById(R.id.bottomsheet); 


    //SET SAVE SHARE BUTTON TEXT 
    TextView heroName2 = (TextView) findViewById(R.id.btn_custom_view); 
    heroName2.setText("Share " + superHero.getName()); 


} 


<code> 
    public void onClick(View view) { 
     switch (view.getId()) { 
      case R.id.btn_custom_view: 
       bottomSheetLayout.showWithSheetView(getLayoutInflater().inflate(R.layout.bottomsheet, bottomSheetLayout, false)); 
       break; 


//   case R.id.btn_save_face: 
//    break; 

      case R.id.btn_share_face: 


       ImageView imageView = (ImageView) findViewById(R.id.imageViewHero); 
       Drawable mDrawable = imageView.getDrawable(); 
       Bitmap mBitmap = ((BitmapDrawable)mDrawable).getBitmap(); 

       String path = MediaStore.Images.Media.insertImage(getContentResolver(), 
         mBitmap, "face", null); 

       Uri uri = Uri.parse(path); 


       final SuperHero superHero = App.self.previewRequestedSuperHeroObject; 
       String url = superHero.getImageUrl(); 
       String name = superHero.getName(); 


       final Intent shareIntent = new Intent(Intent.ACTION_SEND); 
       shareIntent.putExtra(Intent.EXTRA_STREAM, uri); 
       shareIntent.setType("image/*"); 

       IntentPickerSheetView intentPickerSheetView = new IntentPickerSheetView(CardPreviewActivity.this, shareIntent, ("Share " + superHero.getName()), new IntentPickerSheetView.OnIntentPickedListener() { 
        @Override 
        public void onIntentPicked(IntentPickerSheetView.ActivityInfo activityInfo) { 
         bottomSheetLayout.dismissSheet(); 
         startActivity(activityInfo.getConcreteIntent(shareIntent)); 
        } 
       }); 

       bottomSheetLayout.showWithSheetView(intentPickerSheetView); 
       break; 


      case R.id.btn_copy_direct_link: 

       final SuperHero superHero2 = App.self.previewRequestedSuperHeroObject; 

       ClipboardManager clipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE); 
       ClipData clip = ClipData.newPlainText("face direct link", superHero2.getDirectLink()); 
       clipboard.setPrimaryClip(clip); 
//    Toast.makeText(getApplicationContext(), ("Copied " + superHero2.getName() + " URL to the clipboard"), Toast.LENGTH_SHORT).show(); 
       bottomSheetLayout.dismissSheet(); 
       Snackbar.make(view, "Copied " + superHero2.getName() + "'s URL to the clipboard", Snackbar.LENGTH_LONG) 
         .setAction("Action", null) 
         .show(); 
       break; 


      case R.id.btn_copy_direct_link_with_tags: 

       final SuperHero superHero3 = App.self.previewRequestedSuperHeroObject; 

        ClipboardManager clipboard2 = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE); 
       ClipData clip2 = ClipData.newPlainText("face direct link with image tags", ("[img]" + superHero3.getDirectLink() + "[/img]")); 
       clipboard2.setPrimaryClip(clip2); 
//    Toast.makeText(getApplicationContext(), ("Copied " + superHero3.getName() + " URL to the clipboard with IMG tags"), Toast.LENGTH_SHORT).show(); 
       bottomSheetLayout.dismissSheet(); 
       Snackbar.make(view, "Copied " + superHero3.getName() + "'s URL to the clipboard with IMG tags", Snackbar.LENGTH_LONG) 
         .setAction("Action", null) 
         .show(); 
       break; 

     } 
    } 
    //Add back button to go back 
    @Override 
    public void onBackPressed() { 
     super.onBackPressed(); 
     overridePendingTransition(R.anim.activity_back_in, R.anim.activity_back_out); 
    } 

    public boolean onSupportNavigateUp() { 
     finish(); 
     overridePendingTransition(R.anim.activity_back_in, R.anim.activity_back_out); 
     return true; 
    } 

    } 

ответ

0

Самый простой способ создания такого BMP является использование Canvas.drawBitmap(). Этот метод позволяет рисовать растровое изображение на холсте. Таким образом, решение таково:

1) Создайте холст желаемого размера на белом фоне (см. Это question).

2) Нарисуйте растровое изображение по центру холста с помощью drawBitmap().

3) Используйте выходной BMP для совместного использования.

Смежные вопросы