Я пытаюсь получить изображение фотосферы с сервера, на котором запущен PHP. Я извлекаю изображение с помощью универсальной библиотеки загрузчика изображений. И затем, после того, как я получил растровое изображение, я сохраняю его на SD-карте, а затем на другой активности, я пытаюсь открыть изображение фотосферы, используя галерею. проблема в том, что когда я сохранил изображение, он сжимает форму 6 МБ только до 1 МБ, из-за чего галерея не может открыть изображение фотосферы. есть ли способ решить это? (Мне было интересно, если это возможно, чтобы передать изображения непосредственно в галерею или есть способ сохранить изображение несжатого)Сохранение фотосферы без несжатого хранилища
код:
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);
}