मैंने एक एंड्रॉइड गतिविधि लिखी है जो प्रोग्राम को प्रोग्राम रूप से कैप्चर करता है। मैं छवि को सही EXIF अभिविन्यास डेटा के साथ एक जेपीईजी के रूप में सहेजना चाहता हूं (जैसे देशी एंड्रॉइड कैमरा ऐप स्वचालित रूप से करता है)। ,एंड्रॉइड फोटो EXIF अभिविन्यास सेट करना
private Camera.PictureCallback jpgCallback = new Camera.PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
releaseCamera();
savePhoto(data);
};
तस्वीर ठीक से लिया जाता है:
private void takePhoto() {
camera = Camera.open();
SurfaceTexture dummySurfaceTexture = new SurfaceTexture(0);
camera.setPreviewTexture(dummySurfaceTexture);
camera.startPreview();
camera.takePicture(null, null, jpgCallback);
}
... और कॉलबैक:
यहाँ (मैं ट्राई/कैच ब्लॉक हटाया) वास्तव में तस्वीर लेने के लिए विधि है लेकिन मेरी समस्या यह है कि EXIF डेटा से पता चलता है कि डिवाइस के अभिविन्यास के बावजूद अभिविन्यास "छवि अभिविन्यास: शीर्ष, बाएं हाथ" पर सेट है, ताकि जब मैं फोटो अपलोड करता हूं तो यह उल्टा या घूर्णन दिखाई देता है।
क्या मुझे वास्तव में डिवाइस अभिविन्यास को मैन्युअल रूप से कैप्चर करने की आवश्यकता है (रोल, पिच, अजीमुथ) और EXIF अभिविन्यास स्वयं लिखें? कैमरा ऐप स्वचालित रूप से इस डेटा को सही तरीके से कैसे लिखता है? क्या किसी को इस विशेषता को सही तरीके से सेट करने का तरीका पता है?
संपादित करें: मैं स्क्रीन अभिविन्यास का उपयोग नहीं कर सकता क्योंकि गतिविधि पोर्ट्रेट मोड में बंद है।
मैंने पहले ही यह जवाब पढ़ा है, लेकिन इसका उपयोग नहीं किया जा सकता क्योंकि मेरी गतिविधि पोर्ट्रेट मोड में बंद है। https://stackoverflow.com/questions/13245556/exif-orientation-tag-value-always-0-for-image-taken-with-portrait-camera-app-and/13323987#13323987 –