func (s *ResizeSuite) TestResizeImage(c *C) { file, err := ioutil.ReadFile("test/exif_test_img.jpg") c.Assert(err, IsNil) for width, height := range sizes { ctx := &fetch.CacheContext{ Width: width, } data := bytes.NewBuffer(file) orig, _, err := fetch.GetRotatedImage(data) c.Check(err, IsNil) buf := new(bytes.Buffer) jpeg.Encode(buf, orig, nil) resized, err := fetch.Resize(buf, ctx) c.Check(err, IsNil) image, _, err := image.Decode(resized) c.Check(err, IsNil) c.Check(image.Bounds().Size().X, Equals, width) c.Check(image.Bounds().Size().Y, Equals, height) } }
func processFile(src io.Reader, mime string, bucket string) (*Uploadable, error) { if mime == "image/jpeg" || mime == "image/jpg" { image, format, err := fetch.GetRotatedImage(src) if err != nil { return nil, err } if format != "jpeg" { return nil, errors.New("You sent a bad JPEG file.") } width := image.Bounds().Size().X height := image.Bounds().Size().Y key := fileKey(bucket, width, height) data := new(bytes.Buffer) err = jpeg.Encode(data, image, nil) if err != nil { return nil, err } length := int64(data.Len()) return &Uploadable{data, key, length}, nil } else { raw, err := ioutil.ReadAll(src) if err != nil { return nil, err } data := bytes.NewReader(raw) length := int64(data.Len()) image, _, err := image.Decode(data) if err != nil { return nil, err } width := image.Bounds().Size().X height := image.Bounds().Size().Y key := fileKey(bucket, width, height) data.Seek(0, 0) return &Uploadable{data, key, length}, nil } }
func (s *ResizeSuite) insertMockImage() (*fetch.CacheContext, error) { file, err := ioutil.ReadFile("test/exif_test_img.jpg") if err != nil { return nil, err } data := bytes.NewBuffer(file) image, _, err := fetch.GetRotatedImage(data) if err != nil { return nil, err } buf := new(bytes.Buffer) jpeg.Encode(buf, image, nil) // Push the file data into the mock datastore storage.PutReader("test_bucket", "test_id", buf, int64(len(file)), "image/jpeg") return &fetch.CacheContext{ ImageId: "test_id", Bucket: "test_bucket", }, err }
func processImage(src io.Reader, mime string, bucket string) (*url.URL, *url.URL, error) { if mime == "image/jpeg" || mime == "image/jpg" { image, format, err := fetch.GetRotatedImage(src) if err != nil { return nil, nil, err } if format != "jpeg" { return nil, nil, errors.New("You sent a bad JPEG file.") } width := image.Bounds().Size().X height := image.Bounds().Size().Y key := fileKey(bucket, width, height, "jpg") data := new(bytes.Buffer) err = jpeg.Encode(data, image, nil) if err != nil { return nil, nil, err } length := int64(data.Len()) // Upload original file to S3 err = storage.PutReader(bucket, key, data, length, mime) if err != nil { return nil, nil, err } uri := fileUri(bucket, key) return uri, uri, nil } else { raw, err := ioutil.ReadAll(src) if err != nil { return nil, nil, err } data := bytes.NewReader(raw) length := int64(data.Len()) image, format, err := image.Decode(data) if err != nil { return nil, nil, err } width := image.Bounds().Size().X height := image.Bounds().Size().Y key := fileKey(bucket, width, height, format) data.Seek(0, 0) // Upload original file to S3 err = storage.PutReader(bucket, key, data, length, mime) if err != nil { return nil, nil, err } uri := fileUri(bucket, key) return uri, uri, nil } }