2010-11-29 25 views
3

J'ai mon projet J'ai une classe qui dans cette classe je veux avoir accès aux propriétés d'une image. Mais je ne veux pas le montrer à travers cette classe. Dans cette classe, je veux juste connaître la largeur et la hauteur de l'image et faire quelques fonctions mathématiques pour retourner quelque chose.android: Chargement de l'image dans une classe

Mon problème est que je ne sais pas comment je devrais aborder cette image. Ma photo est dans un dossier drawable. Le code que j'ai écrit est, le problème est image = (ImageView) findViewById (R.id.imViewRaw); :

import android.view.View; 
import android.widget.ImageView; 


public class Stego 
{ 
    private ImageView image; 
    private int imWidth, imHeight; 

    public Stego() 
    { 
     // Instantiate an ImageView and define its properties 
     image = (ImageView)findViewById(R.id.imViewRaw); 
     image.setImageResource(R.drawable.tasnim); 
     imWidth = image.getWidth(); 
     imHeight = image.getHeight(); 
    } 

    public int getImageWidth(){ 
     return imWidth; 
    } 

    public int getImageHeight(){ 
     return imHeight; 
    } 

    public int getMaxMessageChars(){ 
     int i = imWidth * imHeight; //Number of Pixels 
     i *= 3; //Number of bytes. (Each pixel includes of three RGB bytes) 
     i /= 4; //Maximum number of characters to store in the picture 

     return i; 
    } 
} 

Répondre

7

image qui est stockée dans vos ressources d'application, vous pouvez pleinement processus via android.graphics.Bitmap

Bitmap image = BitmapFactory.decodeResource(this.getResources(), R.drawable.tasnim); 
    imWidth = image.getWidth(); 
    imHeight = image.getHeight(); 
+0

Merci cher Desiderio, en fait votre code fonctionne très bien quand je le mets dans une activité, mais quand je le mets dans la classe ci-dessus, il montre une erreur à propos de "this.getResources()". Il dit la méthode getResources() dans undefined pour le type Stego. Si je veux le mettre en activité, je devrais le mettre dans trois activités différentes qui ne sont pas rationnelles. Si je le mets dans ma propre classe, cela montre l'erreur ci-dessus. Qu'est-ce que tu penses? Merci encore – Hesam

+0

Vous pouvez mettre Bitmap en paramètre dans votre constructeur Stego. Ou vous pouvez essayer de charger la ressource en utilisant la classe android.content.res.Resources et utiliser BitmapFactory.decodeStream(). – Zelimir

+0

Merci encore, je l'ai fait ces changements: – Hesam