0

PHP를 실행하는 서버에서 광구 이미지를 얻으려고합니다. 유니버설 이미지 로더 라이브러리를 사용하여 이미지를 가져옵니다. 그런 다음 비트 맵을 얻은 다음 SD 카드에 저장 한 다음 다른 활동에서 갤러리를 사용하여 광구 이미지를 열려고합니다. 문제는 내가 이미지를 저장할 때 6MB보다 작아서 1MB 미만으로 압축되어 포토 갤러리 이미지를 열 수 없다는 것입니다. 이 문제를 해결할 방법이 있습니까? (이 갤러리에 직접 비트 맵을 통과 할 수 있는지 궁금 해서요 또는 압축되지 않은 이미지를 저장하는 방법이있다)Photophere 이미지를 스토리지에 압축 해제했습니다.

코드 :

DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder() 
    .cacheInMemory(true).cacheOnDisk(true) 
    .build(); 

    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(mContext) 
    .defaultDisplayImageOptions(defaultOptions) 
    .build(); 

    ImageLoader.getInstance().init(config); 
    ImageLoader imageLoader = ImageLoader.getInstance(); 
    imageLoader.displayImage(mHotelDetailResponseData.photosphere, mImage, defaultOptions, new ImageLoadingListener() { 
     @Override 
     public void onLoadingStarted(String imageUri, View view) { 
     } 
     @Override 
     public void onLoadingFailed(String imageUri, View view, FailReason failReason) { 
      Log.d("Test","fail : " + failReason.getCause().getMessage()); 
     } 
     @Override 
     public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { 
      Log.d("Test","complete"); 
      writeBitmapToMemory(loadedImage); 
      mPhotoSphereButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Log.d("test","can continue"); 
        Intent i = new Intent(getActivity(), PhotosphereActivity.class); 
        startActivityForResult(i,0); 
       } 
      }); 
     } 
     @Override 
     public void onLoadingCancelled(String imageUri, View view) { 
     } 
    }, new ImageLoadingProgressListener() { 
     @Override 
     public void onProgressUpdate(String imageUri, View view, int current, int total) { 

      Log.d("Test","progress:" +current+"/"+total); 
     } 
    }); 

private void writeBitmapToMemory(Bitmap bitmap) { 
    ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes); 

    File f = new File(Environment.getExternalStorageDirectory() + File.separator + "test.jpg"); 
    try { 
     f.createNewFile(); 
     FileOutputStream fo = new FileOutputStream(f); 
     fo.write(bytes.toByteArray()); 

     fo.close(); 
     Log.d("test","written to : " + Environment.getExternalStorageDirectory() + File.separator + "test.jpg"); 
    } catch (IOException e) { 
     e.printStackTrace(); 
     Log.d("test","error : " + e.getMessage()); 
    } 
} 

에서 열 수있는 의도를 보낼 활동 갤러리 : (압축되지 않은 광구를 열면 괜찮습니다.)

public class PhotosphereActivity extends BaseActivity{ 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    startPanorama(); 
} 

private void startPanorama() { 
    Intent intent = new Intent(); 
    intent.setAction(Intent.ACTION_VIEW); 
    intent.setComponent(new ComponentName("com.google.android.gms", "com.google.android.gms.panorama.PanoramaViewActivity")); 
    intent.setDataAndType(Uri.parse(Environment.getExternalStorageDirectory() + File.separator + "test.jpg"), "image/*"); 
    startActivity(intent); 
} 

답변

0

괜찮습니다. 문제는 갤러리를 사용하여 이미지를 열 때 "이미지/*"뿐만 아니라 의도 유형을 구체적으로 정의해야한다는 것입니다.