Установить фоновый рисунок как фотографию, сделанную камерой - PullRequest
1 голос
/ 05 декабря 2011

Я создаю мобильное приложение с помощью PhoneGap в Android и пытаюсь установить фон для фотографии, снятой с помощью камеры.

У меня камера работает нормально (код ниже), однако после съемки фотографии я хочу сразу установить фоновое изображение тела в качестве фотографии вместо того, чтобы просто показывать пользователю свою фотографию.

var pictureSource;   // picture source
var destinationType; // sets the format of returned value 

// Wait for PhoneGap to connect with the device
//
document.addEventListener("deviceready",onDeviceReady,false);

// PhoneGap is ready to be used!
//
function onDeviceReady() {
    pictureSource=navigator.camera.PictureSourceType;
    destinationType=navigator.camera.DestinationType;
}

// Called when a photo is successfully retrieved
//
function onPhotoDataSuccess(imageData) {
  // Uncomment to view the base64 encoded image data
  // console.log(imageData);

  // Get image handle
  //
  var smallImage = document.getElementById('smallImage');

  // Unhide image elements
  //
  smallImage.style.display = 'block';

  // Show the captured photo
  // The inline CSS rules are used to resize the image
  //
  smallImage.src = "data:image/jpeg;base64," + imageData;

  //set the background here?
  $('#wrapper').css("background-image", "url(imageData.jpg)"); 
}

// Called when a photo is successfully retrieved
//
function onPhotoURISuccess(imageURI) {
  // Uncomment to view the image file URI 
  // console.log(imageURI);

  // Get image handle
  //
  var largeImage = document.getElementById('largeImage');

  // Unhide image elements
  //
  largeImage.style.display = 'block';

  // Show the captured photo
  // The inline CSS rules are used to resize the image
  //
  largeImage.src = imageURI;
}

// A button will call this function
//
function capturePhoto() {
  // Take picture using device camera and retrieve image as base64-encoded string
  navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50 });
}

// A button will call this function
//
function capturePhotoEdit() {
  // Take picture using device camera, allow edit, and retrieve image as base64-encoded string  
  navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 20, allowEdit: true }); 
}

// A button will call this function
//
function getPhoto(source) {
  // Retrieve image file location from specified source
    navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50, 
    destinationType: destinationType.FILE_URI,
    sourceType: source });
}

// Called if something bad happens.
// 
function onFail(message) {
  alert('Failed because: ' + message);
}

Чтобы установить фон в предыдущем коде, я использовал следующее:

$('#wrapper').css("background-image", "url(imageData.jpg)")

Любая помощь будет отличной.

1 Ответ

1 голос
/ 20 апреля 2012

вы хотите указать URI, а не данные base64

добавить

$('#wrapper').css("background-image", "url("+imageURI+")")

в нижней части функции onPhotoURISuccess и использовать ее в качестве обработчика успеха при вызове capturePhoto (),Я только что сработал для меня, используя почти такой же код (пример из документации по API phonegap для камеры)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...