2017-09-22 17 views
1

원격 서버에서 다운로드 한 파일에 ImageView을 설정하고 장치의 로컬 저장소에 저장했습니다. 어떤 이유로 이미지가 왜곡됩니다. 내 연구에서 scaleType, adjustViewBounds, maxWidthmaxHeight 속성을 ImageView으로 설정하면 Android에서 저의 이미지 크기를 조정합니다. 안드로이드가 아닌 다른 개발 환경에서 이미지를 표시하기 전에 프로그래밍 방식으로 이미지의 크기를 조정해야했기 때문에 이상하게 보입니다. 그러나 this post은 안드로이드가 그럴 것이라고 말합니다. ImageProgammatically ImageView가 왜곡을 일으켰습니다

왜곡 된 이미지 :

내가 화면으로 노력하고있어 이미지

enter image description here

코드 :이 사람이 도움이된다면, 내가 크기 조정 결국

<ImageView 
     android:id="@+id/title_image" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:maxWidth="60dp" 
     android:maxHeight="60dp" 
     android:scaleType="fitCenter" 
     android:adjustViewBounds="true" 
     /> 

    String path = getExternalStorageDirectory() + "/MyApp/Images"; 
    String fileName = "Test.jpg"; 
    File imageFile = new File(path, fileName); 

    if (imageFile.exists()) 
    { 
     Uri imageUri = Uri.fromFile(imageFile); 
     ((ImageView)findViewById(R.id.title_image)).setImageURI(thumbnail); 
    } 

답변

0

이 코드를 사용하는 이미지 :

  final URLConnection ucon = new URL(url).openConnection(); 
      final InputStream is = ucon.getInputStream(); 
      final Bitmap b = BitmapFactory.decodeStream(is); 

      int origWidth = b.getWidth(); 
      int origHeight = b.getHeight(); 
      float scaleWidth = ((float) width)/origWidth; 
      float scaleHeight = ((float) width)/origHeight; 

      final Matrix matrix = new Matrix(); 
      matrix.postScale(scaleWidth, scaleHeight); 

      Bitmap b2 = Bitmap.createBitmap(b, 0, 0, origWidth, origHeight, matrix, false); 

      ByteArrayOutputStream outStream = new ByteArrayOutputStream(); 
      b2.compress(Bitmap.CompressFormat.PNG, 100, outStream); 

      FileOutputStream fo = new FileOutputStream(file); 
      fo.write(outStream.toByteArray()); 
      fo.flush(); 
      fo.close(); 
      outStream.flush(); 
      outStream.close(); 
      b.recycle(); 
      b2.recycle();