iphone - ฉันจะรับความสูงและความกว้างของ uiimage ได้อย่างไร


227

จากอิมเมจ URL ในเมล

ฉันกำลังเพิ่มภาพในมุมมองเมล มันจะแสดงภาพเต็ม แต่ฉันต้องการคำนวณเปลี่ยนความสูงและความกว้างของภาพเป็นสัดส่วน

ฉันจะรับความสูงและความกว้างได้UIImageอย่างไร


คำตอบ:


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

let widthInPoints = image.size.width
let widthInPixels = widthInPoints * image.scale

3
จุด คูณด้วยคุณสมบัติมาตราส่วนเพื่อรับพิกเซล
rmooney

มันแปลกมาก ฉันถ่ายรูปด้วยกล้องและควรมีความสูง> ความกว้าง แต่คะแนนความกว้างคือ 1280 และความสูง 720 ปัญหากับพวกเขาคืออะไร
Henry

1
เมื่อโหลดภาพจากม้วนฟิล์ม (ผ่าน UIImagePickerController) สเกลมักจะเป็น 1.0 แต่ image.size ไม่ได้ image.size ไม่ได้ถูกกำหนดเป็นพิกเซล (จริง ๆ แล้วมันมีขนาดครึ่งพิกเซล) -> ฉันจะได้ขนาดพิกเซลที่เหมาะสมได้อย่างไร - ไม่สามารถใช้ UIScreen.main.scale สาเหตุที่ 3 บน iPhone 6/7 บวก แต่ image.size ยังคงเหมือนเดิม
benrudhart

ดูเหมือนว่า image.scale เป็นเพียง 1.0 โดยค่าเริ่มต้นตามที่ระบุไว้ในความคิดเห็นก่อนหน้า อย่างที่กล่าวไว้ว่าฉันได้รับค่าเช่น (3000, 2002) สำหรับภาพตัวจำลองเริ่มต้นดังนั้นต้องเป็นพิกเซลจริงไม่ใช่ค่าจุดใช่ไหม? โพสต์นี้มีอายุไม่กี่ปีดังนั้นขนาดภาพอาจมีการเปลี่ยนแปลงเพื่อให้สอดคล้องกับค่าพิกเซลที่แท้จริง
Austin Whitelaw



6

ผู้ใช้งานบางคนด้านบนใช้งานไม่ได้เมื่อหมุนอุปกรณ์

ลอง:

CGRect imageContent = self.myUIImage.bounds;
CGFloat imageWidth = imageContent.size.width;
CGFloat imageHeight = imageContent.size.height;

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) ;

0
    import func AVFoundation.AVMakeRect

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

    x = imageRect.minX

    y = imageRect.minY

มันใช้งานง่ายจาก UIImage กว่าการใช้เฟรมเวิร์กอื่น
Satyam

0

มีวิธีแก้ไขปัญหาที่เป็นประโยชน์มากมาย แต่ไม่มีวิธีที่เรียบง่ายพร้อมส่วนขยาย นี่คือรหัสในการแก้ปัญหาด้วยส่วนขยาย:

extension UIImage {

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

    var getHeight: CGFloat {
        get {
            let height = self.size.height
            return height
        }
    }
}

-2
let imageView: UIImageView = //this is your existing imageView

let imageViewHeight: CGFloat = imageView.frame.height

let imageViewWidth: CGFloat = imageView.frame.width

คุณแสดงวิธีรับขนาดของ imageView มันไม่เหมือนกับขนาดของรูปภาพ
ramzesenok
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.