ios - مقاسات - موقع زيادة دقة الصورة




أي اقتراحات حول كيفية توسيع نطاق كامل الشاشة صورة باد دون أن تفقد جودة الصورة؟ (3)

اقتراح واحد آخر: استخدام كوارتز 2D سغكونتيكستريف

1) حفظ الرسومات الخاصة بك كما بدف. وسوف تكون صغيرة كما انها ناقلات

2) فتح بدف كما هو موضح هنا: كوارتز 2D دليل البرمجة

3) إنشاء كبيتمابكونتيكست وتقديم الجزء المطلوب من قوات الدفاع الشعبي هناك

4) إنشاء CPCexture2D من كغبتمابكونتيكست - نلقي نظرة هنا: http://www.cocos2d-iphone.org/forum/topic/30152؟replies=6#post-148782 أو فحص CCTexture2D.m -initWithImage

5) استخدامه.

وإليك ما أحاول تحقيقه:

صورة الشاشة الكاملة للحيوان (ناقلات الفن القائم، وليس صورة) على جهاز آي باد. عند النقر على جزء من الجسم، دعنا نقول الأذن، يتم عرض تكبير الصورة والأحدث على الأذن والنص حول الأذن. انقر على زر التصغير ثم عدت إلى لقطة الجسم بالكامل. أنا أعرف كيفية برمجة التكبير والتحرك، ولكن أنا لا أعرف ما هو أفضل نهج سيكون للتعامل مع جودة الصورة. تحتاج الصورة 1024x768 لتكبير بنسبة 400٪ للحصول على تأثير المحاصيل التي أريد. من الواضح، لباد الجديد، أن الصورة 1024x768 ستبدأ بالفعل الضعف ويجب أن تزيد من 400٪ من هناك.

الميل الأولي هو أن تأخذ صورة 4096x3072 وتبدأ خفضه إلى 1/4، ثم عند نطاق في 400٪، لا تفقد جودة الصورة. تستخدم هذه الصورة واحدة تقريبا 70MB من الذاكرة التي من المتوقع، وأنا أفهم لماذا يحدث ذلك، ولكن من الواضح أن هذا لن يطير عندما يكون هذا هو جزء واحد فقط من التطبيق أكبر. ناهيك عن ما سيحدث مع إصدار 2x لشبكية العين.

هل لدى أي شخص أي اقتراحات حول كيفية تحقيق هذا التأثير دون وضع مثل هذا الحمل على الجهاز؟ يبدو أن أجهزة يوس لا يمكن أن تعمل مع الصور المتجهات، منها فقط تنقيط. بسبب مستوى التفاصيل أود تحقيقه، لا أستطيع فقط التكبير والتعامل مع فقدان الجودة. هل هذا قابل للتنفيذ أو يجب أن أجد نهجا مختلفا؟ أنا أعمل مع شكود 4.3.1 و Cocos2d v 1.0.1، ولكن يمكن أن ننظر إلى v2.0 إذا كان من شأنه أن يحل مشكلتي.

صورة كاملة الجسم من بلدي الليمور سوبر رهيبة (لدي مصمم جرافيك للقيام بذلك في وقت لاحق):

التكبير على الأذن:

مرة واحدة مصمم لدينا يعمل على ذلك، وأتصور شيئا أكثر على طول هذه الخطوط (صورة من جوجل صور البحث، وليس عملي، ونأمل لنا لن يكون غاضب جدا):


ربما يمكنك استخدام صور متعددة. لديك كامل الشاشة تماما تكبير الصورة. عندما يقرر المستخدم لتكبير جزء من ثم عرض آخر صورة ملء الشاشة للجزء التكبير. يمكنك الرسوم المتحركة الانتقال (تتلاشى في / خارج) بحيث أنها سوف تكون على نحو سلس بما فيه الكفاية.

هذا يفترض خيارات التكبير. على سبيل المثال يمكن للمستخدم التكبير في أماكن الفرق N على الحيوان.


يمكنك استخدام وظيفة كغكونتيكستسكاليكتم في إطار كوارتز 2D لتوسيع الصور عالية الدقة بسلاسة.

يمكنك العثور على تطبيق عينة لطيفة من قبل أبل في ورل المذكورة أدناه. MoveMe_APLMoveMeView_m

TiledImageView.h

#import <UIKit/UIKit.h>

@interface TiledImageView : UIView {
    CGFloat imageScale;
    UIImage* image;
    CGRect imageRect;
}
@property (retain) UIImage* image;

-(id)initWithFrame:(CGRect)_frame image:(UIImage*)_image scale:(CGFloat)_scale;

@end

TiledImageView.m

#import "TiledImageView.h"
#import <QuartzCore/QuartzCore.h>

@implementation TiledImageView

@synthesize image;

// Set the layer's class to be CATiledLayer.
+ (Class)layerClass {
    Return [CATiledLayer class];
}

- (void)dealloc {
    [image release];
    //--
    [super dealloc];
}

// Create a new TiledImageView with the desired frame and scale.
-(id)initWithFrame:(CGRect)_frame image:(UIImage*)_image scale:(CGFloat)_scale {
    if ((self = [super initWithFrame:_frame])) {
        self.image = _image;
        imageRect = CGRectMake(0.0f, 0.0f, CGImageGetWidth(image.CGImage), CGImageGetHeight(image.CGImage));
        imageScale = _scale;
        CATiledLayer *tiledLayer = (CATiledLayer *)[self layer];
        // levelsOfDetail and levelsOfDetailBias determine how
        // the layer is rendered at different zoom levels.  This
        // only matters while the view is zooming, since once the 
        // the view is done zooming a new TiledImageView is created
        // at the correct size and scale.
        tiledLayer.levelsOfDetail = 4;
        tiledLayer.levelsOfDetailBias = 4;
        tiledLayer.tileSize = CGSizeMake(512.0, 512.0); 
    }
    return self;
}

-(void)drawRect:(CGRect)_rect {
    CGContextRef context = UIGraphicsGetCurrentContext();    
    CGContextSaveGState(context);
    // Scale the context so that the image is rendered 
    // at the correct size for the zoom level.
    CGContextScaleCTM(context, imageScale,imageScale);  
    CGContextDrawImage(context, imageRect, image.CGImage);
    CGContextRestoreGState(context);    
}
@end






scale