2016-04-05 4 views
-1

Я работаю над загрузкой изображения на веб-сайт.Изображение не может загрузить в правильном направлении

Пользователь может фотографировать через свою камеру и загружать.

Я проверяю его с моим iPhone 5S

Но загрузить фото с экрана iPhone в неправильном направлении на ПК, а также правильное направление в мобильном устройстве.

в моем компьютере:

enter image description here

правильное направление (дисплей направление в iPhone)

enter image description here

в моем процессе загрузки, я просто ничего не делать с изображением, и Я использую Express и multer:

var storage = multer.diskStorage({ 
    destination: function(req, file, cb) { 
     cb(null, 'public/uploads'); 
    }, 
    filename: function(req, file, cb) { 
     var name = file.originalname; 
     var dot = name.lastIndexOf('.'); 
     cb(null, name.slice(0, dot) + '-' + new Date().getTime() + name.slice(dot)); 
    } 
}); 

var upload = multer({ 
    storage: storage, 
    fileFilter: function(req, file, cb) { 
     if (/\.(png|jpg)$/.test(file.originalname)) { 
      cb(null, true); 
     } else { 
      cb(null, false); 
     } 
    } 
}); 

var fileUpload = upload.single('file'); 
router.post('/ajaxupload', function(req, res) { 
    fileUpload(req, res, function(err) { 
     if (err) { 
      res.json({ 
       success: false, 
       message: 'upload failed' 
      }); 
      return; 
     } 
     console.log(req.file); 
     res.json({ 
      success: true, 
      filename: req.file.path.replace(/public/, '') 
     }); 
    }); 
}); 
+0

добавить код так что я буду решать ваши проблемы – iOS

+0

Да, то же самое случилось со мной .. !! Ориентация захваченной фотографии меняется после загрузки изображения в Интернете. –

+0

Что вы делаете для загрузки изображения? base64 или другой подход, который вы используете. –

ответ

0

Вызов этого метода, где ориентация изображения был изменен

- (UIImage *)changeOrientation:(UIImage *)image { 

    if (image.imageOrientation == UIImageOrientationUp) return image; 

    CGAffineTransform transform = CGAffineTransformIdentity; 

    switch (image.imageOrientation) { 
     case UIImageOrientationDown: 
     case UIImageOrientationDownMirrored: 
      transform = CGAffineTransformTranslate(transform, image.size.width, image.size.height); 
      transform = CGAffineTransformRotate(transform, M_PI); 
      break; 

     case UIImageOrientationLeft: 
     case UIImageOrientationLeftMirrored: 
      transform = CGAffineTransformTranslate(transform, image.size.width, 0); 
      transform = CGAffineTransformRotate(transform, M_PI_2); 
      break; 

     case UIImageOrientationRight: 
     case UIImageOrientationRightMirrored: 
      transform = CGAffineTransformTranslate(transform, 0, image.size.height); 
      transform = CGAffineTransformRotate(transform, -M_PI_2); 
      break; 
     case UIImageOrientationUp: 
     case UIImageOrientationUpMirrored: 
      break; 
    } 

    switch (image.imageOrientation) { 
     case UIImageOrientationUpMirrored: 
     case UIImageOrientationDownMirrored: 
      transform = CGAffineTransformTranslate(transform, image.size.width, 0); 
      transform = CGAffineTransformScale(transform, -1, 1); 
      break; 

     case UIImageOrientationLeftMirrored: 
     case UIImageOrientationRightMirrored: 
      transform = CGAffineTransformTranslate(transform, image.size.height, 0); 
      transform = CGAffineTransformScale(transform, -1, 1); 
      break; 
     case UIImageOrientationUp: 
     case UIImageOrientationDown: 
     case UIImageOrientationLeft: 
     case UIImageOrientationRight: 
      break; 
    } 

    CGContextRef ctx = CGBitmapContextCreate(NULL, image.size.width, image.size.height, 
              CGImageGetBitsPerComponent(image.CGImage), 0, 
               CGImageGetColorSpace(image.CGImage), 
              CGImageGetBitmapInfo(image.CGImage)); 
    CGContextConcatCTM(ctx, transform); 
    switch (image.imageOrientation) { 
     case UIImageOrientationLeft: 
     case UIImageOrientationLeftMirrored: 
     case UIImageOrientationRight: 
     case UIImageOrientationRightMirrored: 

      CGContextDrawImage(ctx, CGRectMake(0,0,image.size.height,image.size.width), image.CGImage); 
      break; 

     default: 
      CGContextDrawImage(ctx, CGRectMake(0,0,image.size.width,image.size.height), image.CGImage); 
      break; 
    } 

    CGImageRef cgimg = CGBitmapContextCreateImage(ctx); 
    UIImage *img = [UIImage imageWithCGImage:cgimg]; 
    CGContextRelease(ctx); 
    CGImageRelease(cgimg); 
    return img; 
} 
+0

Вы говорите Свифт? Но я делаю веб-приложение. – Littlee

+0

Это в Objective C .. –

+0

Извините, я делаю веб-путь. – Littlee

Смежные вопросы