2017-11-29 1 views
-1

私たちはAndroidの大学向けのプライベートソーシャルメディアアプリを開発しています。しかし、私の現在のAndroid Appの画像のレンダリング速度は非常に遅いです。それはおよそかかります。画像が表示され、この犯罪者の日に5秒間。Androidのエキスパート - 低インターネットエリアと低品質の携帯電話ですぐに画像を表示するための助けが必要

さまざまなオプションを試しましたが、現在のアンドロイドの開発者はこれを解決できません。誰も代替のオプションを提案できますか? これまで行ってきたことがあります。

ほとんどの質問Upfront: 1.私たちはどこでうんざりしていますか? 2.サムネイルのサイズは正しいですか?ここで

は、我々はあなたの条件のサムネイルごとにアンドロイドThumbnailUtilsを使用して生成するようにしてください

1. Compress the image from device before sending to server via API - We are doing this for jpeg only. Need to do this for .PNG 
AFAIK, this is the code used. As I am not an Android developer, I am not sure this is complete. 

*Bitmap scaledBitmap = ImageCompression.compressImage(1328.0f, 1771.0f, sourceFile.getAbsolutePath()); 

     FileOutputStream out = new FileOutputStream(destFile); 
     if (null != scaledBitmap) 
      scaledBitmap.compress(Bitmap.CompressFormat.JPEG, 80, out); 
     return destFile; 
public static File getCompressedImage(File srcFile, File destFile) throws FileNotFoundException { 
     Bitmap scaledBitmap = ImageCompression.compressImage(1328.0f, 1771.0f, srcFile.getAbsolutePath()); 
     FileOutputStream out = new FileOutputStream(destFile); 
     if (null != scaledBitmap) 
      scaledBitmap.compress(Bitmap.CompressFormat.JPEG, 80, out); 
     return destFile; 
    } 

######### Used this code to do compression - https://gist.github.com/walteranyika/2db99439225a82d2c1497e6ab61a8a3d #################### ImageCompression.Java ######## Relevant parts are pasted here. 
*Canvascanvas=null; 
if(scaledBitmap!=null){ 
canvas=newCanvas(scaledBitmap); 
canvas.setMatrix(scaleMatrix); 
canvas.drawBitmap(bmp,middleX-bmp.getWidth()/2,middleY-bmp.getHeight()/2,newPaint(Paint.FILTER_BITMAP_FLAG)); 
}** 


2. Server is creating thumbnails using thumbnilator 
    a. We are creating 4 sized thumbnails for 4 phone sizes with size less than 100 KB by reducing quality 
     i. All Portrait images and all width * height and in DP 
     ii. Small - 150 * 150 
     iii. Medium - 200 * 200 
     iv. Large - 210 * 420 
     v. X-Large - 500 * 640 
3. Enabled BucketAccelerateConfiguration in AWS 
4. Thumbnails along with original image is sent to target device from server via API 
5. Using a combination of Glide and Picasso libraries to display thumbnails and original image in the backend 
    a. If thumbnails are empty, we are displaying original URL 
    b. If the thumbnails are available, we are displaying Thumbnail till original image is displayed 


*if(TextUtils.isEmpty(thumbUrl)){ 
    GlideApp.with(getContext()) 
    .load(imageUrl) 
    .placeholder(R.drawable.image_placeholder) 
    .diskCacheStrategy(DiskCacheStrategy.DATA) 
    .dontAnimate() 
    .dontTransform() 
    .into(imageView); 
}else{ 
Picasso.with(context.getApplicationContext()) 
    .load(thumbUrl)//thumbnailurlgoeshere 
    .placeholder(R.drawable.image_placeholder) 
    .resize(AppConstants.IMAGE_SIZE,AppConstants.IMAGE_HEIGHT) 
    .transform(HomeActivity.blurTransformation) 
    .into(imageView,newCallback(){ 
    @Override 
publicvoidonSuccess(){ 
    Picasso.with(context.getApplicationContext()) 
    .load(imageUrl)//imageurlgoeshere 
    .placeholder(imageView.getDrawable()) 
    .into(imageView); 
    } 
@Override 
publicvoidonError(){ 
    GlideApp.with(getContext()) 
    .load(imageUrl) 
    .placeholder(R.drawable.image_placeholder) 
    .diskCacheStrategy(DiskCacheStrategy.DATA) 
    .dontAnimate() 
    .dontTransform() 
    .into(imageView); 
    } 
    }); 
} 
}* 
+1

_、ここThumbnailUtilsに関するすべての情報を得ることができますが - 十年ほど前、「フェイスブック」と呼ばれることはなかったですか? –

+0

私たちは非常に異なっています - 私はあなたに別々にお答えすることができます。一方で、私が尋ねた質問に答えることはできますか?トピックから逸​​脱しないでください。 – Yasim

答えて

0

を追った手順ですバックエンドサーバに送信する前に画像(ロスレス)を圧縮するためにJavaでライブラリの 3.任意の提案選択したイメージのビットマップに変換して設定します。

より速く動作します。

あなたが_「大学のために民間のソーシャルメディアのApp」 https://developer.android.com/reference/android/media/ThumbnailUtils.html

関連する問題