我期待創建一個應用程序,其中半透明圖像疊加在相機預覽上。我知道他們在原生Phonegap相機API中不支持這一點。我想知道是否有誰有編寫Phonegap插件的經驗可以給我任何意見,這是否可能與一個插件。我想我已經看到,通過本地代碼可以實現這種技術,所以在我看來,編寫一個Phonegap插件來訪問這個功能是可能的,我只是沒有任何有關Phonegap插件的經驗。使用Phonegap在iOS上的相機預覽上疊加圖像
回答
我知道,這有點太晚了,但有一種方法(僅iPad)。您可以使用標準org.apache.cordova.camera
-Plugin。但你必須調整它有點
首先subclasse的CDVCameraPicker
這樣你就可以通過切換科爾多瓦-API覆蓋:
CDVCameraPicker + Overlay.h:
#import "CDVCamera.h"
@interface CDVCameraPicker (Overlay)
@property (nonatomic, strong) id showOverlay;
@end
CDVCameraPicker + Overlay.m:
#import "CDVCameraPicker+Overlay.h"
#import <objc/runtime.h>
static void *overlayKey;
@implementation CDVCameraPicker (Overlay)
@dynamic showOverlay;
- (void) setShowOverlay:(id)showOverlay {
objc_setAssociatedObject(self, overlayKey, showOverlay, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
- (id) showOverlay {
return objc_getAssociatedObject(self, overlayKey);
}
@end
然後添加這些行到CDVCamera.m檢查ImagePickerSourceType右後(132線)
if ([cameraPicker.showOverlay intValue] == 1) {
UIImageView *overlay = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 768, 1024)];
overlay.contentMode = UIViewContentModeScaleAspectFill;
overlay.image = [UIImage imageNamed:@"overlay.png"];
}
不要忘了導入子類CameraPicker在CDVCamera.m #import "CDVCameraPicker+Overlay.h"
不,你必須編輯Camera.js
- 文件 添加該行的其他選項下面
var showOverlay = getValue(options.showOverlay, false);
然後將var
添加到args
- 最後一個索引處的陣列。就是這樣。現在你可以切換你的疊加像這樣:
navigator.camera.getPicture(onSuccess, onFail, { quality: 40,
destinationType: Camera.DestinationType.FILE_URI,
sourceType: Camera.PictureSourceType.CAMERA,
encodingType: Camera.EncodingType.JPEG,
correctOrientation: true,
saveToPhotoAlbum: true,
showOverlay: false
});
這是一箇舊的,從一個長期完成的項目(或放棄不記得),但我想花時間感謝你這個深入的答案。我將來可能會再次需要它,我相信它會派上用場! – tmartineau
你能接受這個答案嗎?謝謝 – matthisb
@tmartineau我試過了,但沒有奏效。你知道這是否仍然適用於最新版本的科爾多瓦?我可以讓覆蓋圖像出現的唯一方法是在CDVCamera.m的第685行的'if(cameraPicker.sourceType == UIImagePickerControllerSourceTypeCamera)'中。我使用這行代碼'UIImageView * overlayImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@「myImage」]]; overlayImage.frame = CGRectMake(0,0,768,1024); cameraPicker.cameraOverlayView = overlayImage;'問題是需要10秒才能加載或根本沒有。 – Paul
我試過接受的答案,但不幸的是沒有爲我工作。
相反,我找到了一個更簡單的解決方案。在CDVCamera.m
:
+ (instancetype) createFromPictureOptions(CDVPictureOptions*)pictureOptions;{
CDVCameraPicker* cameraPicker = [[CDVCameraPicker alloc] init];
cameraPicker.pictureOptions = pictureOptions;
cameraPicker.sourceType = pictureOptions.sourceType;
cameraPicker.allowsEditing = pictureOptions.allowsEditing;
if (cameraPicker.sourceType == UIImagePickerControllerSourceTypeCamera) {
// More code...
// Here is where you place your overlay.
dispatch_async(dispatch_get_main_queue(), ^{
UIImageView *overlayImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"myImage.png"]];
overlayImage.frame = CGRectMake(0, 0, 768, 1024);
[cameraPicker.cameraOverlayView addSubview:overlayImage];
[cameraPicker setCameraOverlayView:overlayImage];
});
// Code left out for brevity
}
}
它來執行使用大中央調度覆蓋是很重要的。
- 1. android Camera2 API + TextureView疊加在相機預覽上繪圖
- 2. 如何在iPhone的相機視圖上疊加圖像?
- 3. 入口處的iOS相機預覽方法 - 疊加問題
- 4. IOS如何合併相機預覽圖層上的一個圖像?
- 5. 使用Phonegap在相機預覽頂部的圖像/按鈕/圓圈
- 6. 上傳相機預覽android
- 7. 如何獲取相機預覽上的圖像覆蓋
- 8. 在相機預覽版上放置ImageView
- 9. 不顯示相機在Android上預覽
- 10. ColorEffect在相機預覽上不可見
- 11. Android - 相機上的圖像疊加移動
- 12. UIImagePickerController無法在預覽上疊加/跳過預覽
- 13. 如何在預覽圖層上設置正確的相機圖像尺寸?
- 14. imagebutton上方的相機預覽
- 15. Galaxy S上的相機預覽版
- 16. Android上的拉伸相機預覽
- 17. LG Optimus Black上的相機預覽
- 18. 合併相機預覽和圖像?
- 19. 適合在div上的圖像預覽
- 20. 使用相機api與phonegap上symbian
- 21. Android上的PhoneGap相機
- 22. 如何在TextureView上使用相機預覽錄製視頻
- 23. 用相機保存圖像疊加拍攝的圖像underneith
- 24. 使用python在另一個圖像上疊加圖像
- 25. 相機預覽上摩托羅拉Droid
- 26. 在上傳多個圖像之前預覽圖像上傳
- 27. 如何疊加相機捕捉圖像?
- 28. 避免圖像在手機上堆疊
- 29. Android相機 - 如何更改預覽上的像素?
- 30. 在iOS上瀏覽圖片相冊
我在找同樣的東西......你有沒有找到過什麼? – Harry
這並不完全回答這個問題,但值得一看:http://libresoft.es/node/146。源代碼位於底部,基於phonegap。 – hitautodestruct