如何在Flutter中实现图像翻转:适配相机拍摄图片的翻转需求
我通过相机捕获图像后,希望参考示例中长颈鹿样图展示的效果,对拍摄得到的图像完成对应的翻转操作。
实现方案
按使用场景选对应方法:
预览阶段实现翻转
如果不需要修改原始图像文件,仅在相机预览、图片展示页达到镜像效果,直接给图像元素加变换属性即可:
- 水平翻转(即示例长颈鹿的左右镜像效果):
transform: scaleX(-1); - 垂直翻转(上下镜像):
transform: scaleY(-1);
生成翻转后的图像文件
需要把翻转效果保存为新图片文件的,按技术栈选:
- Python(OpenCV):
# 传入原图,1=水平翻转、0=垂直翻转、-1=双方向同时翻转 flipped_img = cv2.flip(captured_img, 1) - Python(PIL/Pillow):
flipped_img = original_img.transpose(Image.FLIP_LEFT_RIGHT) - Android(原生Bitmap):
val flipMatrix = Matrix().apply { postScale(-1f, 1f) } // 水平翻转,垂直改为postScale(1f, -1f) val flippedBitmap = Bitmap.createBitmap(originalBitmap, 0, 0, originalBitmap.width, originalBitmap.height, flipMatrix, true) - iOS(原生UIImage):
直接调用originalImage.withHorizontallyFlippedOrientation()得到水平翻转后的图片。
已拍摄单图快速处理
无需写代码的场景直接用系统工具:
- Windows:「画图」打开图片,工具栏选「翻转 -> 水平翻转」
- Mac:「预览」打开图片,顶部菜单选「工具 -> 水平翻转」
- 手机端:系统相册的图片编辑功能自带「镜像/翻转」选项
内容的提问来源于stack exchange,提问作者Arslan Ehsan
相关产品推荐
相关产品推荐


