Soru & Cevap

ScreenShot Alınan Görselin Boyutunu Ayarlama

09.08.2014 - 02:14

Merhabalar iyi çalışmalar. StoryBoard ViewController' da bir adet ScrollView ve üzerinde UIImageView var. Bu view' ın tamamının ekran görüntüsünü almak istiyorum. Action' da kullandığım kod şu şekilde;

 

[code]

    UIImage* image = nil;

    

    UIGraphicsBeginImageContext(scroll.contentSize);

    {

        CGPoint savedContentOffset = scroll.contentOffset;

        CGRect savedFrame = scroll.frame;

        scroll.contentOffset = CGPointZero;

        scroll.frame = CGRectMake(0, 0, 640, 1136);

        [scroll.layer renderInContext: UIGraphicsGetCurrentContext()];

        image = UIGraphicsGetImageFromCurrentImageContext();

        scroll.contentOffset = savedContentOffset;

        scroll.frame = savedFrame;

    }

    UIGraphicsEndImageContext();

    

    if (image != nil) {

        [UIImagePNGRepresentation(image) writeToFile: @"/tmp/test.png" atomically: YES];

        system("open /tmp/test.png");

    }

    

    NSArray *postItems = @[image];

    

    UIActivityViewController *activityVC = [[UIActivityViewController alloc]

                                            initWithActivityItems:postItems

                                            applicationActivities:nil];

    

    [self presentViewController:activityVC animated:YES completion:nil];

[/code]

 

size' ı 640*1136 olarak almama rağmen dışarıya bu şekilde çıkartamıyorum. ScrollView in size(320,600) ile çıkıyor. Yardımlarınız için teşekkürler...

7 Görüntülenme

1 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-2335-1379625106.jpg
rocxteady
09.08.2014 - 03:31

Sorun şu. Sen manuel olarak 640*1136 veriyorsun ama gerçek boyut vermen lazım. Retina istiyorsan ekranın scale değerini şöyle yapman gerekiyor:

[code]CGSize imageSize = CGSizeMake(320, 568);

    UIImage* image = nil;

    UIGraphicsBeginImageContextWithOptions(imageSize, NO, [UIScreen mainScreen].scale);

    {

        CGPoint savedContentOffset = _scrollView.contentOffset;

        CGRect savedFrame = _scrollView.frame;

        _scrollView.contentOffset = CGPointZero;

        _scrollView.frame = CGRectMake(0, 0, _scrollView.contentSize.width, _scrollView.contentSize.height);

        

        [_scrollView.layer renderInContext: UIGraphicsGetCurrentContext()];

        image = UIGraphicsGetImageFromCurrentImageContext();

        _scrollView.contentOffset = savedContentOffset;

        _scrollView.frame = savedFrame;

    }

    UIGraphicsEndImageContext();

    if (image != nil) {

NSArray *postItems = @[image];

    UIActivityViewController *activityVC = [[UIActivityViewController alloc]

                                            initWithActivityItems:postItems                   

                                            applicationActivities:nil];

    [self presentViewController:activityVC animated:YES completion:nil];

    }[/code]

 

Bu sana 640x1136 verecektir.

ekucet
11.08.2014 - 09:04
Teşekkür ederim Ulaş hocam...
rocxteady
11.08.2014 - 09:44
Rica ederim. Yardımcı olduysa cevap lütfen oylayıp kabul ediniz. :)
ekucet
09.08.2014 - 03:53
640x1136 olarak cikarmak istiyorum Ulas hocam.
ekucet
09.08.2014 - 03:59
Scrollun boyutunuda 640x1136 yaptigim zaman cok buyuk oluyor hocam. Su an mevcut projede 320x600 olarak scroll mevcut. App'in amaci appStore' a uygulama upload ederken istenilen SS'i pratik bir sekilde iPhone frame'inin icine atmak. Yani kullanicidan bir image aliyorum bu image'i iPhone'un ekranina yerlestiriyorum. Daha sonra kullanci save yapiyor fakat appStore'un istegi olculerde cikarmak istiyorum. Tesekkurler Ulas hocam.
rocxteady
09.08.2014 - 04:32
Düzenledim cevabı.