Commit af9e1c25 by Li Feifei

add width hegight

parent 23c588dd
Pipeline #14946 failed with stages
in 42 seconds
......@@ -9,8 +9,8 @@ import (
"github.com/aliyun/aliyun-oss-go-sdk/oss"
"github.com/astaxie/beego/orm"
"github.com/chai2010/webp"
"github.com/xxjwxc/gowp/workpool"
"github.com/rocketlaunchr/go-pool"
"github.com/xxjwxc/gowp/workpool"
"image"
"image/jpeg"
"image/png"
......@@ -31,7 +31,6 @@ import (
"time"
)
var (
//WEBURL string = "http://offcn-live-svc"
WEBURL string = "https://test-live.offcncloud.com"
......@@ -41,8 +40,6 @@ var (
const docUrl string = "http://doc.offcncloud.com/"
func init() {
once.Do(func() {
log.SetFlags(log.Lshortfile | log.LstdFlags)
......@@ -53,8 +50,6 @@ func init() {
})
}
func Upload(v *models.XyuSmallTempFiles) {
go Down(v)
......@@ -174,9 +169,8 @@ func Down(v *models.XyuSmallTempFiles) {
}
defer fd.Close()
log.Println("objectName == ", objectName)
objectPath := objectName[0:strings.LastIndex(objectName, "/")]+"/"
objectPath := objectName[0:strings.LastIndex(objectName, "/")] + "/"
room_file["path"] = objectName
err = bucket.PutObject(objectName, fd)
if err != nil {
......@@ -215,10 +209,9 @@ func Down(v *models.XyuSmallTempFiles) {
downUrl := fmt.Sprintf("http://doc.offcncloud.com/?info=1&words=%v&ssl=1&furl=%s",
wordFloat64, furl)
ch := make(chan bool)
go func() {
err := downloadFile(downUrl, contentHash ,func(length, downLen int64) {
err := downloadFile(downUrl, contentHash, func(length, downLen int64) {
})
if err == nil {
......@@ -230,20 +223,22 @@ func Down(v *models.XyuSmallTempFiles) {
}()
<-ch
reader, err := zip.OpenReader( "/data/files/" + contentHash + ".zip")
reader, err := zip.OpenReader("/data/files/" + contentHash + ".zip")
if err != nil {
log.Println("5===",err)
log.Println("5===", err)
UpdateFileError("4", v.Uuid, v.RoomNum, objectName)
return
}
Pool := workpool.New(100)
var imageInfos [][]interface{}
for _, file := range reader.File {
Pool.DoWait(func() error {
log.Printf("file = %s \n", file.Name)
var err error
for i := 0; i < 3; i++ {
if err = pdfThumbnail(objectPath, file, bucket); err == nil {
if imageinfo, err := pdfThumbnail(objectPath, file, bucket); err == nil {
imageInfos = append(imageInfos, imageinfo)
break
}
}
......@@ -260,7 +255,6 @@ func Down(v *models.XyuSmallTempFiles) {
defer reader.Close()
go func() {
err := uploadPacked(bucket, filename, contentHash, objectPath,
wordFloat64)
......@@ -284,17 +278,13 @@ func Down(v *models.XyuSmallTempFiles) {
}
}
elapsed := time.Since(t)
log.Println("filename == ", filename, " 上传成功, 上传耗时 == ", elapsed)
// 删除压缩包和删除文件
defer os.Remove(filePath)
defer os.Remove("/data/files/" + contentHash+".zip")
defer os.Remove("/data/files/" + contentHash + ".zip")
return
}
func webToken() (*http.Client, string, error) {
......@@ -309,7 +299,6 @@ func webToken() (*http.Client, string, error) {
Jar: jar,
}
payload := strings.NewReader("name=offcn&password=123123")
req, err := http.NewRequest("POST", WEBURL+"/web/login", payload)
......@@ -328,7 +317,7 @@ func webToken() (*http.Client, string, error) {
bodys, err := ioutil.ReadAll(res.Body)
if err != nil {
log.Println("获取数据失败",err)
log.Println("获取数据失败", err)
return &http.Client{}, "", err
}
......@@ -362,11 +351,11 @@ func webToken() (*http.Client, string, error) {
}
}
func UpdateFileError(code , uuid, room_num, path string) error {
func UpdateFileError(code, uuid, room_num, path string) error {
vv := Qurl.Values{}
vv.Add("code", code)
vv.Add("uuid", uuid)
vv.Add("room_num",room_num)
vv.Add("room_num", room_num)
vv.Add("path", path)
client, token, err := webToken()
if err != nil {
......@@ -376,7 +365,7 @@ func UpdateFileError(code , uuid, room_num, path string) error {
vv.Add("_token", token)
body := vv.Encode()
payload := strings.NewReader(body)
req, err := http.NewRequest("POST",WEBURL + "/web/room_files_error", payload)
req, err := http.NewRequest("POST", WEBURL+"/web/room_files_error", payload)
if err != nil {
log.Println(err)
......@@ -425,7 +414,7 @@ func CreateFileDataBase(room_file map[string]interface{}) error {
vv.Add("_token", token)
body := vv.Encode()
payload := strings.NewReader(body)
req, err := http.NewRequest("POST",WEBURL + "/web/room_files_add", payload)
req, err := http.NewRequest("POST", WEBURL+"/web/room_files_add", payload)
if err != nil {
log.Println(err)
......@@ -459,12 +448,11 @@ func CreateFileDataBase(room_file map[string]interface{}) error {
return nil
}
func pdfThumbnail(objectPath string, file *zip.File, bucket *oss.Bucket) error {
func pdfThumbnail(objectPath string, file *zip.File, bucket *oss.Bucket) ([]interface{}, error) {
fc, err := file.Open()
if err != nil {
return err
return nil, err
}
defer fc.Close()
......@@ -474,24 +462,20 @@ func pdfThumbnail(objectPath string, file *zip.File, bucket *oss.Bucket) error {
buf := item.Item.(*bytes.Buffer)
//defer debug.FreeOSMemory()
var img image.Image
fileSuffix := path.Ext(file.Name) //获取文件后缀
switch fileSuffix {
case ".png":
img, _ = png.Decode(fc)
case ".jpeg":
img, _ = jpeg.Decode(fc)
default:
return errors.New("image ext is not found")
return nil, errors.New("image ext is not found")
}
//var buf bytes.Buffer
if err = webp.Encode(buf, img, &webp.Options{Lossless:true}); err != nil {
return err
if err = webp.Encode(buf, img, &webp.Options{Lossless: true}); err != nil {
return nil, err
}
r := bytes.NewReader(buf.Bytes())
......@@ -502,28 +486,40 @@ func pdfThumbnail(objectPath string, file *zip.File, bucket *oss.Bucket) error {
filenameOnly = strings.Replace(filenameOnly, "p", "", -1)
fileName := fmt.Sprintf("%05s", filenameOnly) + ".webp"
return bucket.PutObject(objectPathName+fileName, r)
c, _, err := image.DecodeConfig(fc)
if err != nil {
return nil, err
}
var imageInfo []interface{}
imageInfo = append(imageInfo, fileName)
imageInfo = append(imageInfo, c.Width)
imageInfo = append(imageInfo, c.Height)
return imageInfo, bucket.PutObject(objectPathName+fileName, r)
}
func uploadPacked(bucket *oss.Bucket, filename, contentHash,
objectPath string, word float64) error {
objectPath string, word float64, imageInfos [][]interface{}) error {
type packed struct {
FileName string `json:"fileName"`
Hash string `json:"hash"`
ImagesName []string `json:"imagesName"`
OssImagesPath string `json:"ossImagesPath"`
ImageInfos [][]interface{} `json:"imageInfos"`
}
p := packed{
FileName: filename,
Hash: contentHash,
OssImagesPath: objectPath + "images/",
ImageInfos: imageInfos,
}
for i := 1; i <= int(word); i++ {
p.ImagesName = append(p.ImagesName, fmt.Sprintf("%05d", i)+".webp")
}
log.Println("imageInfos == ", imageInfos)
data, err := json.Marshal(p)
if err != nil {
return err
......@@ -537,7 +533,6 @@ func uploadPacked(bucket *oss.Bucket, filename, contentHash,
return nil
}
func getWords(maps map[string]interface{}) float64 {
if word, ok := maps["SlideCount"]; ok {
return word.(float64)
......@@ -587,7 +582,6 @@ func newOssClient() (*oss.Bucket, error) {
return bucket, nil
}
func downloadFile(url, contentHash string, fb func(length, downLen int64)) error {
var (
fsize int64
......@@ -611,9 +605,7 @@ func downloadFile(url, contentHash string, fb func(length, downLen int64)) error
}
//创建文件
file, err := os.Create("/data/files/" + contentHash+".zip")
file, err := os.Create("/data/files/" + contentHash + ".zip")
if err != nil {
log.Println(err)
return err
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment