2010-04-09 4 views
3

Étant donné l'URL d'une image (et non l'image elle-même), quel est le plus efficace pour obtenir ses dimensions? Je voudrais changer les attributs de hauteur et de largeur dans l'étiquette d'image (<img>) si elle est supérieure à 200x200. Cependant, si c'est plus petit que ça, je voudrais garder la taille telle qu'elle est. (J'utilise ASP.NET/C#)Obtenir les dimensions de l'image distante

+0

Si je comprends bien, vous voulez redimensionner l'image dans le navigateur, de sorte que toutes les images sont alignes? Si oui, vérifiez ma réponse avec comment faire cela en javascript assez facilement. –

Répondre

1

Si vous ne voulez pas vérifier les propriétés de l'image en la chargeant d'abord vous pouvez le faire avec javascript:

<img src="image.jpg" onload="if(this.width > 200) this.width = 200;"> 
1

Si vous savez que c'est un JPEG, vous pouvez simplement tirer le first few bytes et analyser la largeur/hauteur de l'en-tête de l'image.

D'autres formats d'image peuvent être plus difficiles à réaliser. Je pense que puisque PNG fait tout en morceaux, vous ne pouvez pas faire ce genre d'inspection d'en-tête.

0

http://www.brettb.com/ASPNETUploadImageSize.asp

L'exemple de code provient du site ci-dessus. Ceci est une image téléchargée, mais il vous montre comment obtenir le informatin à partir d'un flux de fichier:

private void ButtonUpload_Click(object sender, System.EventArgs e) { 

    //Determine type and filename of uploaded image 
    string UploadedImageType = UploadedPicture.PostedFile.ContentType.ToString().ToLower(); 
    string UploadedImageFileName = UploadedPicture.PostedFile.FileName; 

    //Create an image object from the uploaded file 
    System.Drawing.Image UploadedImage = System.Drawing.Image.FromStream(UploadedPicture.PostedFile.InputStream); 

    //Determine width and height of uploaded image 
    float UploadedImageWidth = UploadedImage.PhysicalDimension.Width; 
    float UploadedImageHeight = UploadedImage.PhysicalDimension.Height; 

    //Check that image does not exceed maximum dimension settings 
    if (UploadedImageWidth > 600 || UploadedImageHeight > 400) { 
      Response.Write("This image is too big - please resize it!"); 
    } 

} 
+0

Je pense que c'est techniquement une tricherie, car cela permettrait de télécharger l'image. :) – MusiGenesis

4

au lieu d'essayer de vérifier les dimensions (ce qui serait une perte, puisque vous auriez presque toujours télécharger l'ensemble de l'image et le traiter), pourquoi ne pas simplement placer l'image dans un élément <div> et définir les styles max-height et max-width du conteneur aux dimensions souhaitées?

L'autre option consiste à extraire l'image une fois que vous en avez pris conscience, à la redimensionner pour l'insérer dans votre conteneur de manière appropriée, à la stocker sur votre serveur et à la diffuser.

+0

Il me semble qu'il veut redimensionner l'image avec des attributs de hauteur/largeur dans le navigateur. Définir la taille sur un div ne le redimensionnera pas. –

+0

Ceci est une bonne solution, agréable n facile et le serveur n'a pas besoin de faire du travail = D –

Questions connexes