2016-04-29 11 views
1

私は、ユーザーがそれを選択するまで、サーバーからイメージをダウンロードしたくありません。私は画像のサムネイルを表示したい。サムネイルを取得するには? サーバーからのURLを使用してフルイメージをダウンロードできます。SDWebImageを使用してサムネイル画像を取得する方法は?

サーバーのイメージが1MBの場合、サムネイルのバージョンを取得するにはどうすればよいですか?

+0

画像の絶対URLはありますか?あなたは客観的なCや迅速を使用していますか? – Hasya

+0

はいURLがあり、サーバーからフルイメージをダウンロードできます。私はObjectiveCを使用しています。サーバー側の –

+1

は2枚のイメージを作成します。最初にサムネイルをロードし、ユーザーが画像をクリックするとオリジナル画像がロードされます。 WhatsAppも同じことをしています。 – ivarun

答えて

3

あなたの目標を達成するための2つの方法があります。

ウェイ1:

は、あなたがサムネイルを取得することはできません。サイズが1 MBと言うファイルがある場合は、SDWebImageを使用してダウンロードする必要があります。ダウンロードが完了すると、画像のサムネイルが作成されます。これで、1MBのイメージを削除できます。サムネイルを作成するため

コード:

+ (UIImage *)imageWithImage:(UIImage *)image scaledToFillSize:(CGSize)size 
{ 

CGFloat scale = MAX(size.width/image.size.width, size.height/image.size.height); 
CGFloat width = image.size.width * scale; 
CGFloat height = image.size.height * scale; 
CGRect imageRect = CGRectMake((size.width - width)/2.0f, 
           (size.height - height)/2.0f, 
           width, 
           height); 

UIGraphicsBeginImageContextWithOptions(size, NO, 0); 
[image drawInRect:imageRect]; 
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();  
UIGraphicsEndImageContext(); 
return newImage; 
} 

ウェイ2:サーバー側で

あなたがイメージの元画像とサムネイルの両方を維持する必要があります。そして、最初にSDWebImageを使用してサムネイルを読み込みます。ユーザーがサムネイルをクリックすると、SDWebImageを使用してサーバーから元のイメージを取得します。

+1

あなたはサーバー上で私はイメージの2つのコピーを保持する必要があると言っている。 1つはサムネイル用、もう1つはオリジナル用ですか?最初はサムネイルを取得する必要があり、ユーザーがサムネイルを選択した場合、完全な画像をダウンロードする必要があります。 完全な画像をダウンロードしたくありません。あなたはこれについて確信を持っていますか?これを脱出する方法はありますか?私はinstagramとgoogleがこれに似ていることを知っています。 –

+0

はい。更新された回答を確認してください。 –

+0

@PayalManiyar:まず画像をダウンロードしてサムネイルを作成するのは良い解決策ではありません... !! – Lion

0

絶対URLがあり、SDWebImageを使用してイメージを表示したいとき。コード下

使用

SDWebImageManager *manager = [SDWebImageManager sharedManager]; 
    [manager downloadImageWithURL:[NSURL URLWithString:strDisplayURL] 
          options:0 
         progress:^(NSInteger receivedSize, NSInteger expectedSize) { 
          // progression tracking code 
         } 
         completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) { 

          if (image) 
          { 

           dispatch_async(dispatch_get_main_queue(), ^{ 

            profileImageView.image = image; 

           }); 

          } 

         }]; 

用画像モード。

enter image description here

と画像表示の高さや幅の角の半径の半分を作ります。それは円のイメージビューになります。

1

ios deviceからサーバーを変更することはできません。データをサーバに置くか、そこからデータを取得するだけです。サーバーに大きな画像が保存されている場合は、iosからサムネイルにすることはできません。あなたはただそれをダウンロードすることができます、あなたの必要性に応じてそれを変更することができますあなたのデバイスに画像が来ると。

したがって、同じイメージの2つのコピーをサーバーに保存する方が良いし、サーバー側からは難しい作業ではありません。 :)

関連する問題