سؤال

وأنا باستخدام مجموعة كاملة من CALayers، وخلق صورة تستند إلى البلاط لا تختلف GOOGLEMAPS (إصدارات مختلفة من نفس الصورة مع أكثر / أقل التفاصيل).

ورمز أنا باستخدام للقيام بذلك هي:

UIImage* image = [self loadImage:obj.fileName zoomLevel:obj.zoomLevel];
[CATransaction setValue:(id)kCFBooleanTrue
                 forKey:kCATransactionDisableActions];
obj.layerToAddTo.contents = [image CGImage];
[CATransaction commit];

وأنا لا أشعر حقا مثل تحميل CGImage من الملفات باستخدام CoreGraphics لأنني كسول. لكنني سوف إذا كان هناك دفعة أداء كبير! LoadImage فقط mangles سلسلة للحصول على الطريق الصحيح لتحميل وقال صورة، والكائنات هو NSObject-البنية التي تحمل كل المعلومات أحتاج لهذا الموضوع.

مساعدة؟

هل كانت مفيدة؟

المحلول

وليس هناك دفعة أداء كبير - إذا كان أي شيء انها على العكس من ذلك. من خلال الذهاب throuh UIImage لتحميل الصور الخاصة بك، عليك أن تحصل على كل فوائد التخزين المؤقت أن يفعل لك وأنه سوف يكون المخلوق سريع جدا للاستخدام مع مختلف CALayers الخاص بك.

نصائح أخرى

ولقد حاولت هذه واستخدام CoreGraphics نقية لتحميل الصورة بدلا من استخدام أعطى UIImage تحسن سرعة ملحوظ عند تحميل العديد من الصور دفعة واحدة.

و"لقد حاولت هذه واستخدام CoreGraphics نقية لتحميل الصورة بدلا من استخدام أعطى UIImage تحسن سرعة ملحوظ عند تحميل العديد من الصور دفعة واحدة."

وكيف تجنب استخدام UIImage؟ أو بتعبير أدق، كيف يمكن تحميل ملف صورة مباشرة في CoreGraphics دون المرور من خلال UIImage؟

وسبب واحد لماذا لا لاستخدام UIImage -imageNamed: لتحميل الصور هو أن يتم تخزينها في ذاكرة التخزين المؤقت الداخلية ولا يتم مسح أن مخبأ في موقف ذاكرة منخفضة.

وليس لدي إجابة محددة ولكن كنت اعتقد ان كنت انظر فترة الحمل أبطأ عند استخدام UIImage مما كنت أرى عند استخدام CGImage. مع CGImage، يمكنك تحديد نوع الصورة (JPG أو PNG) أثناء إنشاء، ولكن مع UIImage، نوع الكائن يحتاج إلى أن تحدد بشكل حيوي. وباعتراف الجميع، وربما هذا هو بسيطة مثل النظر في وحدات البايت القليلة الأولى من ملف الصورة، ولكن قد لا يكون.

وبمجرد أن الصورة هي في الواقع في الاستخدام، وأود أن لا نتصور أن تريد ان تكون هناك أي فرق على الإطلاق بين استخدام CGImage التي تمثل داخليا UIImage مقابل استخدام CGImage قمت بإنشائه بنفسك. كنت اعتقد انها تريد ان يكون معادلا بالضبط.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top