2016-04-05 16 views
-1

私はイメージをアップロードするウェブサイトで作業しています。イメージは正しい方向にアップロードできません

ユーザーは自分のカメラアップロードを経由して写真を撮ることができます。

私は私のiPhone 5S

でそれをテストしかし、iPhoneのPC上の間違った方向の表示、およびモバイルデバイスの右方向からの写真のアップロードしています。私のPCで

enter image description here

正しい方向(iPhoneで表示)私のアップロードプロセスで

enter image description here

、私は単純に画像に何もしない、と私はExpressmulterを使用します。

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

を変更され、この方法は、いくつかのコードを追加するには、Callので、私はあなたの問題を解決します – 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

スウィフトと話していますか?しかし、私はWebアプリケーションをやっています。 – Littlee

+0

これはObjective Cです。 –

+0

申し訳ありませんが、私はウェブでやっています。 – Littlee

関連する問題