سؤال

لدي شعور بأن هذه ليست مهمة سهلة، لكنني بحاجة إلى الجمع بين أو تسطيح UiimageView مع عرض Uiimage آخر يكذب فوقه. على سبيل المثال: لدي اثنين UiimageViews. واحد منهم لديه uiimage من حقل عشبي (1200 × 1200 بكسل). الآخر هو uiimage لكرة السلة (128 × 128 بكسل)، ويتم وضعها فوق صورة الحقل العشبي بطريقة يبدو أن كرة السلة تبدو على الحقل العشبي. أريد أن أكون قادرا على حفظ UIIMAGEVEVEJEVES المتراكبة كملف صورة مفرد لألبوم الصور الخاص بي مما يعني أنني سأحتاج إلى الجمع بين الصورتين بطريقة أو بأخرى. كيف سيتم إنجاز هذا؟ (ملاحظة: لن يكون أخذ لقطة شاشة (320 × 480 بكسل) حلا مقبولا كما أرغب في الحفاظ على حجم 1200 × 1600 بكسل.

سؤال:
كيف يمكنني تسوية العديد من uiimageview في واحدة وحفظ الصورة الناتجة مع الحفاظ على الحجم / الدقة.

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

المحلول

هذا يأخذ أي رؤية ويجعل uiimage من ذلك. سيتم عرض أي وجهة نظر "مسطحة" في uiimage يمكنك عرضها أو حفظها على القرص.

  - (UIImage*)imageFromView{

    UIImage *image;

    UIGraphicsBeginImageContext(self.view.bounds.size);
    [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
    image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return image;

}

نصائح أخرى

لماذا لا ترسم فقط UIIMages الأصلي في مخزن مؤقت خلفية أعلى بعضها البعض ثم اكتب صورة مجتمعة إلى ملف؟ فيما يلي مثال كيف يمكنك رسم صورتين لنفس المخزن المؤقت:

CGImageRef bgimage = [bguiimage CGImage];
width = CGImageGetWidth(bgimage);
height = CGImageGetHeight(bgimage);

// Create a temporary texture data buffer
GLUbyte* data = (GLubyte *) malloc(width * height * 4);
assert(data);

// Draw image to buffer
CGContextRef ctx = CGBitmapContextCreate(data, width, height, 8, width * 4, CGImageGetColorSpace(image), kCGImageAlphaPremultipliedLast);
assert(ctx);

// Flip image upside-down because OpenGL coordinates differ
CGContextTranslateCTM(ctx, 0, height);
CGContextScaleCTM(ctx, 1.0, -1.0);

CGContextDrawImage(ctx, CGRectMake(0, 0, (CGFloat)width, (CGFloat)height), bgimage);

CGImageRef ballimage = [balluiimage CGImage];
bwidth = CGImageGetWidth(ballimage);
bheight = CGImageGetHeight(ballimage);

float x = (width - bwidth) / 2.0;
float y = (height - bheight) / 2.0;
CGContextDrawImage(ctx, CGRectMake(x, y, (CGFloat)bwidth, (CGFloat)bheight), ballimage);

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