2011-10-12 36 views
0

有谁知道是否可以做Photoshop层复合模式“负乘法”?Negative乘以imagemagick?

乘法是可能的,但我需要消极的方式。

MagickBooleanType aStat = MagickCompositeImage(magick_wand_local, magick_wand_local_comp, MultiplyCompositeOp, 0, 0); 

感谢

回答

1

好。自己找到了。

这就是所谓的:ScreenCompositeOp

一些示例代码(不清洗!):

CGImageRef standardized = srcCGImage; //createStandardImage(srcCGImage); 

    // could use the image directly if it has 8/16 bits per component, 
    // otherwise the image must be converted into something more common (such as images with 5-bits per component) 
    // here we’ll be simple and always convert 
    const char *map = "ARGB"; // hard coded 
    const StorageType inputStorage = CharPixel; 

    NSData *srcData = (NSData *) CGDataProviderCopyData(CGImageGetDataProvider(standardized)); 

    const void *bytes = [srcData bytes]; 
    MagickWandGenesis(); 
    MagickWand * magick_wand_local= NewMagickWand(); 
    MagickBooleanType status = MagickConstituteImage(magick_wand_local, width, width, map, inputStorage, bytes); 
    if (status == MagickFalse) { 
     ThrowWandException(magick_wand_local); 
    }  
    /* 
    status = MagickOrderedPosterizeImage(magick_wand_local, "h8x8o"); 
    if (status == MagickFalse) { 
    ThrowWandException(magick_wand_local); 
    } 
    */ 

    //status = MagickThresholdImage(magick_wand_local, 100.0); 

    MagickWand * magick_wand_local_comp = NewMagickWand(); 
    NSString *file = @"winter_over.jpg"; 
    if(export == YES) { 
     file = @"winter_over_large.jpg"; 
    } 

    if(MagickReadImage(magick_wand_local_comp,[[[NSBundle mainBundle] pathForResource:file ofType:@""] UTF8String]) == MagickFalse) { 
     ExceptionType severity; 
     char *err = MagickGetException(magick_wand_local_comp, &severity); 
     printf("%s\n",err); 
     NSLog(@"error"); 
    } 

    MagickBooleanType aStat = MagickCompositeImage(magick_wand_local, magick_wand_local_comp, ScreenCompositeOp, 0, 0);  
    if(aStat == MagickFalse) { 
     NSLog(@"error"); 
    } 

    status = MagickModulateImage(magick_wand_local, 100, 29, 100); 



    if (status == MagickFalse) { 
     ThrowWandException(magick_wand_local); 
    } 

    const int bitmapBytesPerRow = (width * strlen(map)); 
    const int bitmapByteCount = (bitmapBytesPerRow * height); 
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 
    char *trgt_image = malloc(bitmapByteCount); 
    status = MagickExportImagePixels(magick_wand_local, 0, 0, width, height, map, CharPixel, trgt_image); 
    if (status == MagickFalse) { 
     ThrowWandException(magick_wand_local); 
    } 
    magick_wand_local = DestroyMagickWand(magick_wand_local); 
    magick_wand_local_comp = DestroyMagickWand(magick_wand_local_comp); 
    MagickWandTerminus(); 
    CGContextRef context = CGBitmapContextCreate (trgt_image, 
                width, 
                height, 
                8, // bits per component 
                bitmapBytesPerRow, 
                colorSpace, 
                kCGImageAlphaPremultipliedFirst); 
    CGColorSpaceRelease(colorSpace); 
+0

嗨,它可能有它的代码示例?我想有一个没有负面的Photoshop修改效果。 Tnx – Safari

+1

发布了一些示例代码 –

+0

Tnx以供评论。此代码适用于乘法效应?我没有看到 MagickConstituteImage(magick_wand_local,magick_wand_local_comp,MultiplyCompositeOp,0,0) – Safari