我想使用以下方法为my_own_png.png文件添加水印:
class LoginViewControllerTests: XCTestCase {
func testTokenExists() {
let mockContext = MockContextUtils.getMockContext()
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.managedObjectContext = mockContext
let sut = LoginViewController()
let _ = sut.view // Apparently this renders the view; I set a breakpoint, viewDidLoad is called
XCTAssertNotNil(sut.token) // FAILS, BECAUSE APPDELEGATE CALLS APP DATABASE, AND NOT MOCK.
}
}
result.png不是我的意思,我想保留my_own_png.png的alpha。
请帮忙〜谢谢。
答案 0 :(得分:1)
有两种方法可以做到这一点......
首先,您可以使用当前处理,我认为您理解并且满意,然后将原始图像的alpha复制回结果的顶部,如下所示:
# Your current processing
composite -dissolve 10% ... result.png
# Now add back the original image's alpha
convert result.png my_own_png.png -compose CopyOpacity -composite result.png
或者,您可以使用convert
而不是composite
一次性完成所有操作,它看起来像这样但是很难确定没有看到您实际在做什么:
convert my_own_png.png \
\( +clone -gravity center watermark_350.png -compose dissolve -define compose:args='10' -composite \) \
+swap -compose CopyOpacity -composite result.png
这基本上会加载你的my_own_png.png
并将其放在一边。然后它复制它并用括号内的水印溶解。在括号之后,交换图像的顺序,使得带水印的图像首先在列表中,并且原始png在列表中是第二个。然后它从原始图像复制alpha并将其应用于水印图像 - 希望: - )