-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathpreview_test.go
78 lines (70 loc) · 1.58 KB
/
preview_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package arw
import (
"bytes"
"fmt"
"image/jpeg"
"os"
"testing"
"time"
)
func TestEmbeddedJPEGDecode(t *testing.T) {
testARW, err := os.Open("1.ARW")
if err != nil {
t.Error(err)
}
header, err := ParseHeader(testARW)
meta, err := ExtractMetaData(testARW, int64(header.Offset), 0)
if err != nil {
t.Error(err)
}
var jpegOffset uint32
var jpegLength uint32
for i := range meta.FIA {
switch meta.FIA[i].Tag {
case JPEGInterchangeFormat:
jpegOffset = meta.FIA[i].Offset
case JPEGInterchangeFormatLength:
jpegLength = meta.FIA[i].Offset
}
}
jpg, err := ExtractThumbnail(testARW, jpegOffset, jpegLength)
if err != nil {
t.Error(err)
}
reader := bytes.NewReader(jpg)
img, err := jpeg.Decode(reader)
if err != nil {
t.Error(err)
}
out, err := os.Create(fmt.Sprint(time.Now().Unix(), "reencoded", ".jpg"))
if err != nil {
t.Error(err)
}
jpeg.Encode(out, img, nil)
}
func TestEmbeddedJPEG(t *testing.T) {
testARW, err := os.Open("1.ARW")
if err != nil {
t.Error(err)
}
header, err := ParseHeader(testARW)
meta, err := ExtractMetaData(testARW, int64(header.Offset), 0)
if err != nil {
t.Error(err)
}
var jpegOffset uint32
var jpegLength uint32
for i := range meta.FIA {
switch meta.FIA[i].Tag {
case JPEGInterchangeFormat:
jpegOffset = meta.FIA[i].Offset
case JPEGInterchangeFormatLength:
jpegLength = meta.FIA[i].Offset
}
}
t.Log("JPEG start:", jpegOffset, " JPEG size:", jpegLength)
jpg := make([]byte, jpegLength)
testARW.ReadAt(jpg, int64(jpegOffset))
out, err := os.Create(fmt.Sprint(time.Now().Unix(), "raw", ".jpg"))
out.Write(jpg)
}