有谁知道是否可以将Photoshop图层复合模式设为“负乘法”?
可以使用乘法,但我需要消极方式。
MagickBooleanType aStat = MagickCompositeImage(magick_wand_local, magick_wand_local_comp, MultiplyCompositeOp, 0, 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);