2016-08-01 48 views
1

我正在使用angularJS,並需要通過調用JS函數在圖像中應用水印程序。我所擁有的是:如何在使用JavaScript的圖像中應用水印?

<figure><img class="watermark" ng-src="{{applyWatermark(img.url)}}"></figure> 

所以,我需要調用該函數applyWatermark(尚未實現),並與水印返回IMG,但我不知道我怎樣才能建立這個功能。它是否應該返回圖像?有人可以提供我一些例子,我怎麼能做到這一點?

編輯:

我這樣做,但它不工作:

$(function applyWatermark(image) {                                                  
    watermark([image, 'watermark.png'])                              
     .image(watermark.image.lowerRight())                                                
     .then(function (img) {                                                    
      return img                                                      
     });                                                        
}) 

任何想法?

+0

不是一個好主意。用戶可以始終從源獲取原始圖像。 – kxxoling

+0

雖然這對一些用戶有用,但客戶端上的某些東西並不是一個真正的解決方案,因爲在將客戶端代碼實際嵌入到客戶端之前,您將原始內容傳輸到客戶端。 –

回答

2

使用watermark.js

watermark(['/img/forest.jpg', '/img/logo.png']) 
    .image(watermark.image.lowerRight(0.5)) // Or lowerRight() for no opacity 
    .then(function (img) { 
     document.getElementById('alpha-image').appendChild(img); 
    }); 

如果這不適合你,也許試試這個:

$.ajax({ 
    url: 'http://www.example.com/your-image.jpg', 
    type: 'HEAD', 
    error: function() { 
     // File isn't found 
    }, 
    success: function() { 
     // File is found! Do the watermarkage. 
    } 
}); 

測試如果處理前的圖像存在。

+0

你好,謝謝你的回答。我試過你描述的這種方式,但它不起作用,請在原始帖子中查看我的編輯。有什麼想法如何解決這個問題? – chr0x

+0

只要'image'是服務器上圖像的路徑,並且您已正確引用'watermark.js'庫,它肯定應該可以工作。 –

+0

我正在使用這個watermark.js。但是它在轉換後創建大文件(3 MB到9 MB)。如何減少文件大小任何想法? – Raju