+(CGAffineTransform)getCGAffineTransformTransformWithViewSize:(CGSize)viewSize cameraSize:(CGSize)cameraSize orientation: (Orientation)orientation {
CGFloat a = 1.0 ,b = 0.0 ,c = 0.0 ,d = 1.0 ,tx = 0.0 ,ty = 0.0;
if (orientation == portrait) {
a = 0.0; b = 1.0; c = 1.0; d = 0.0; tx = 0.0; ty = 0.0;
CGFloat vScale = viewSize.height/viewSize.width;
CGFloat cScale = cameraSize.width/cameraSize.height;
if (vScale >= cScale) {
CGFloat n_cameraW = viewSize.width / cameraSize.height * cameraSize.width;
b = -n_cameraW / viewSize.height;
ty = 1 - (viewSize.height - n_cameraW) / 2 / viewSize.height;
}else{
CGFloat n_cameraW = viewSize.height * cameraSize.height / cameraSize.width;
b = -1;
c = n_cameraW / viewSize.width;
tx = (viewSize.width - n_cameraW) / 2 / viewSize.width;
ty = 1;
}
}else if (orientation == landscapeRight){
CGFloat vScale = viewSize.height/viewSize.width;
CGFloat cScale = cameraSize.height/cameraSize.width;
if (vScale >= cScale) {
CGFloat n_cameraH = viewSize.width * cameraSize.height / cameraSize.width;
a = n_cameraH / viewSize.height;
tx = (viewSize.height - n_cameraH) / 2 / viewSize.height;
}
}
CGAffineTransform affineTransform = CGAffineTransformMake(a, b, c, d, tx, ty);
return CGAffineTransformInvert(affineTransform);
}