iphone - jak mogę uzyskać wysokość i szerokość uiimage

Odpowiedzi:

424
let heightInPoints = image.size.height
let heightInPixels = heightInPoints * image.scale

let widthInPoints = image.size.width
let widthInPixels = widthInPoints * image.scale
Jgubman
źródło
3
Zwrotnica. Pomnóż przez właściwość skali, aby uzyskać piksele.
rmooney
To było dziwne. Zrobiłem zdjęcie aparatem i przypuszczałem, że jego wysokość> szerokość. Ale punkty szerokości wynosiły 1280, a wysokość 720. Jaki jest z nimi problem?
Henry
1
podczas ładowania obrazu z rolki aparatu (za pomocą UIImagePickerController) skala zawsze wydaje się wynosić 1,0, ale image.size nie ma image.size nie jest podawany w pikselach. (to tak naprawdę połowa wielkości piksela). -> jak uzyskać odpowiedni rozmiar piksela - nie można użyć UIScreen.main.scale, ponieważ to jest 3 na iPhone 6/7 Plus, ale image.size pozostaje taki sam
benrudhart
Wygląda na to, że image.scale ma domyślnie tylko 1,0, jak wspomniano w poprzednim komentarzu. Biorąc to pod uwagę, otrzymuję wartości takie jak (3000, 2002) dla domyślnego obrazu symulatora, więc muszą to być rzeczywiste piksele, a nie wartość punktowa, prawda? Ten post ma kilka lat, więc może image.size zmieniło się w celu odzwierciedlenia rzeczywistej wartości pikseli.
Austin Whitelaw
35

Użyj sizewłaściwości instancji UIImage. Więcej informacji znajduje się w dokumentacji .

Dezorganizacja
źródło
11
UIImage *img = [UIImage imageNamed:@"logo.png"];

CGFloat width = img.size.width;
CGFloat height = img.size.height;
MaxEcho
źródło
6

Niektóre z powyższych odpowiedzi nie działają dobrze podczas obracania urządzenia.

Próbować:

CGRect imageContent = self.myUIImage.bounds;
CGFloat imageWidth = imageContent.size.width;
CGFloat imageHeight = imageContent.size.height;
Sinuhe Huidobro
źródło
2
UIImageView *imageView = [[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"MyImage.png"]]autorelease];

NSLog(@"Size of my Image => %f, %f ", [[imageView image] size].width, [[imageView image] size].height) ;
Sayeed S. Alam
źródło
0
    import func AVFoundation.AVMakeRect

    let imageRect = AVMakeRect(aspectRatio: self.image!.size, insideRect: self.bounds)

    x = imageRect.minX

    y = imageRect.minY
ironRoei
źródło
Jest łatwy w użyciu z UIImage niż przy użyciu innego frameworka.
Satyam
0

Istnieje wiele pomocnych rozwiązań, ale nie ma uproszczonego sposobu na rozszerzenie. Oto kod rozwiązania problemu z rozszerzeniem:

extension UIImage {

    var getWidth: CGFloat {
        get {
            let width = self.size.width
            return width
        }
    }

    var getHeight: CGFloat {
        get {
            let height = self.size.height
            return height
        }
    }
}
Bruno Eigenmann
źródło
-2
let imageView: UIImageView = //this is your existing imageView

let imageViewHeight: CGFloat = imageView.frame.height

let imageViewWidth: CGFloat = imageView.frame.width
Wyatt
źródło
pokazujesz, jak uzyskać rozmiar imageView, nie jest taki sam jak rozmiar obrazu
ramzesenok