1

我试图在图像中获得突出的颜色。最初我试图在这篇文章中设置颜色。但是我的客户对此并不满意,因为它只返回平均颜色集,而不是确切的颜色。因此,现在我试图通过此链接中找到的逻辑来设置主要颜色。但问题是代码在 jQuery 和 JavaScript 中。似乎很容易在网络中实现,因为代码非常简单

myImage = $('#myImage');
dominantColor = getDominantColor(myImage);
paletteArray = createPalette(myImage, 10); // 2nd argument sets # of colors in palette

我浏览了如何在 iOS 中执行 JS 并参考了这个链接这个链接做了如下

[_webView loadHTMLString:@"<script src=\"color-thief.js\"></script>" baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] resourcePath]]];

    NSString * imgName = [[NSBundle mainBundle] pathForResource:@"4" ofType:@"jpg"];
//    UIImage * img = [UIImage imageNamed:imgName];
    int colorCount = 9;

    NSString *function1 =[[NSString alloc] initWithFormat: @"createPalette(%@, %d)", imgName, colorCount];
//    NSString *function2 = [[NSString alloc] initWithFormat: @"getAverageRGB(%@)", imgName];
    NSString *result = [_webView stringByEvaluatingJavaScriptFromString:function1];

    NSLog(@"%@ result %@", result, [_webView stringByEvaluatingJavaScriptFromString:funcion1]);

但我无法得到任何结果。其为空。我错过了什么?有人可以指出我出了什么问题吗?任何及时的帮助表示赞赏。提前致谢。

4

2 回答 2

0

您确定您的网页确实加载了 jQuery 库(从磁盘或在线)?

您可以使用 safari 调试 webview,以检查在模拟器或您的设备上打开 webview 时出现的问题。这是来自苹果的指南,可帮助您入门。

于 2013-05-20T08:13:37.740 回答
0

我有同样的问题。您需要一些不同的功能,显式制作HTMLImageElement.toString()在 getPalette 结束时。还有一些奇怪的 Safari 行为,它只适用于第二个镜头:

let function = "var colorThief = new ColorThief(); var image = new Image(); image.src='\(imgName)'; colorThief.getPalette(image, 5).toString();"

let result1 = self.webView.stringByEvaluatingJavaScriptFromString(function)!
// for some reason result1 is always empty, but if we evaluate the same function second time after some time interval we will get the results.

sleep(1)

let result2 = self.webView.stringByEvaluatingJavaScriptFromString(function)!
// result2 is string of rgb components separated by commas
于 2015-10-13T16:12:50.443 回答