Browse Source

fix: 解决 VapxTool 生成视频时出现花屏的问题

chenmingbiao 5 years ago
parent
commit
3a752226b4
1 changed files with 9 additions and 8 deletions
  1. 9 8
      tool/vapxTool/VapxTool/controllers/VapxAlphaExtractor.m

+ 9 - 8
tool/vapxTool/VapxTool/controllers/VapxAlphaExtractor.m

@@ -152,27 +152,28 @@
     }
     }
     free(rawData);
     free(rawData);
     
     
-    CGDataProviderRef rgbProvider = CGDataProviderCreateWithData(NULL, rgbData, width*height*4, NULL);
-    
     CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault | (CGBitmapInfo)kCGImageAlphaLast;
     CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault | (CGBitmapInfo)kCGImageAlphaLast;
     CGColorRenderingIntent renderingIntent = kCGRenderingIntentDefault;
     CGColorRenderingIntent renderingIntent = kCGRenderingIntentDefault;
+    
+    // 生成 RGB 图片
+    CGDataProviderRef rgbProvider = CGDataProviderCreateWithData(NULL, rgbData, width*height*4, NULL);
     CGImageRef rgbImageRef = CGImageCreate(width,  height, 8, 32, 4*width,colorSpace, bitmapInfo, rgbProvider,NULL,NO, renderingIntent);
     CGImageRef rgbImageRef = CGImageCreate(width,  height, 8, 32, 4*width,colorSpace, bitmapInfo, rgbProvider,NULL,NO, renderingIntent);
     NSImage *rgbImage = [[NSImage alloc] initWithCGImage:rgbImageRef size: rect.size];
     NSImage *rgbImage = [[NSImage alloc] initWithCGImage:rgbImageRef size: rect.size];
+    NSString *rgbDir = [self.resourceDirectory stringByAppendingPathComponent:@"rbgImages"];
+    [self saveImage:rgbImage atPath:[rgbDir stringByAppendingPathComponent:name]];
     CGImageRelease(rgbImageRef);
     CGImageRelease(rgbImageRef);
     free(rgbData);
     free(rgbData);
     CGDataProviderRelease(rgbProvider);
     CGDataProviderRelease(rgbProvider);
-    
+     
+    // 生成 Alpha 图片
     CGDataProviderRef alphaProvider = CGDataProviderCreateWithData(NULL, alphaData, width*height*4, NULL);
     CGDataProviderRef alphaProvider = CGDataProviderCreateWithData(NULL, alphaData, width*height*4, NULL);
     CGImageRef alphaImageRef = CGImageCreate(width,  height, 8, 32, 4*width,colorSpace, bitmapInfo, alphaProvider,NULL,NO, renderingIntent);
     CGImageRef alphaImageRef = CGImageCreate(width,  height, 8, 32, 4*width,colorSpace, bitmapInfo, alphaProvider,NULL,NO, renderingIntent);
     NSImage *alphaImage = [[NSImage alloc] initWithCGImage:alphaImageRef size:rect.size];
     NSImage *alphaImage = [[NSImage alloc] initWithCGImage:alphaImageRef size:rect.size];
+    NSString *alphaDir = [self.resourceDirectory stringByAppendingPathComponent:@"alphaImages"];
+    [self saveImage:alphaImage atPath:[alphaDir stringByAppendingPathComponent:name]];
     CGImageRelease(alphaImageRef);
     CGImageRelease(alphaImageRef);
     free(alphaData);
     free(alphaData);
     CGDataProviderRelease(alphaProvider);
     CGDataProviderRelease(alphaProvider);
-    
-    NSString *alphaDir = [self.resourceDirectory stringByAppendingPathComponent:@"alphaImages"];
-    NSString *rgbDir = [self.resourceDirectory stringByAppendingPathComponent:@"rbgImages"];
-    [self saveImage:alphaImage atPath:[alphaDir stringByAppendingPathComponent:name]];
-    [self saveImage:rgbImage atPath:[rgbDir stringByAppendingPathComponent:name]];
 }
 }
 
 
 - (NSRect)alphaRectForPosition:(VapxAlphaPostion)position rgbSize:(NSSize)size alphaScale:(CGFloat)scale {
 - (NSRect)alphaRectForPosition:(VapxAlphaPostion)position rgbSize:(NSSize)size alphaScale:(CGFloat)scale {