2013-03-29 5 views
2

У меня есть один View. Я пытаюсь сохранить его как размер исправления, например 500*666 в sdcard. Сохранение изображения успешно, но сохранить изображение как показано ниже. Изображение сохраняется как на углу всего изображения. См. Прикрепленное изображение.Как масштабировать и сохранять Вид на SDCard

Код:

private void onSave(final View v) { 
v.setMinimumWidth(500); 
     v.setMinimumHeight(666); 
Bitmap viewBitmap_save = null; 

          savingdialog(); 
          DisplayMetrics dm = new DisplayMetrics(); 
          getWindowManager().getDefaultDisplay().getMetrics(
            dm); 
          Display display = getWindowManager() 
            .getDefaultDisplay(); 

          viewBitmap_save = Bitmap.createBitmap(500, 666, 
            Bitmap.Config.ARGB_8888);// i 
          Canvas canvas = new Canvas(viewBitmap_save); 
          v.draw(canvas); 
          try { 
           Random randomGenerator = new Random(); 
           long RANDOMFILENUMBER = randomGenerator 
             .nextLong(); 
           File wallpaperDirectory = new File(
             "/sdcard/Image Telling/"); 
           // have the object build the directory 
           // structure, if needed. 
           wallpaperDirectory.mkdirs(); 
           // create a File object for the output file 

           // FileOutputStream outStream = new 
           // FileOutputStream(file); 
           File outputFile = new File(wallpaperDirectory, 
             RANDOMFILENUMBER + ".png"); 
           FileOutputStream outStream = new FileOutputStream(
             outputFile); 
           viewBitmap_save.compress(CompressFormat.PNG, 
             100, outStream); 

           sendBroadcast(new Intent(
             Intent.ACTION_MEDIA_MOUNTED, 
             Uri.parse("file://" 
               + Environment 
                 .getExternalStorageDirectory()))); 

          } catch (Exception e) { 
           // TODO: handle exception 
          } 
} 

Я даю ширину и высоту, как исправить, потому что мне нужно изображение в качестве фиксированного размера. Как масштабировать вид? Пожалуйста, помогите мне.

enter image description here

ответ

1

Просто предложение.

Не указывайте высоту, ширину для просмотра, а затем получите растровое изображение оригинального изображения, пока вы получаете.

После того, как вы получили растровый созданный из поля зрения, а затем применить масштабирование .. Вы можете использовать Bitmap.createScaledBitmap()

А затем сохранить этот масштабируется точечный рисунок.

+0

Фактически я использую viewflipper, у которых есть разные дочерние элементы теперь, когда пользователь нажимает кнопку сохранения. Я хочу сохранить текущего ребенка из представления flipper. View viewtosave = vf_letters.getCurrentView(); Это дает мне текущий вид ViewFlipper , который я пытаюсь сохранить. –

+0

Вы пробовали, как я сказал, прежде чем комментировать? .... «Создайте растровое изображение tha viewtosave .. без указания ширины высоты ... после создания растрового изображения, затем уменьшите его». – MKJParekh

+0

Да, я стараюсь. Я удаляю v.setMinimumWidth (500); и v.setMinimumHeight (666); и создать растровое изображение. Но как масштабировать его, чтобы исправить размер, который составляет 500 * 666? –

1

Я думаю, что вы должны передать эти ссылки могут быть, вы получите выход, как вам нужно.

Попробуй раз

+0

Спасибо за ответ, но я столкнулся с проблемой: «Изображение отображается в верхнем левом углу всего вида». Не в масштабе. –

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