basic.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package image
  2. type Basic struct {
  3. Cache
  4. Path string
  5. File string
  6. Background string
  7. ViewPoint *Point
  8. ViewSize *Size
  9. Angle float64
  10. }
  11. // SetAngle 设置旋转角度
  12. func (i *Basic) SetAngle(angle float64) {
  13. i.Angle = angle
  14. }
  15. // SetSize 设置目标尺寸
  16. func (i *Basic) SetSize(width, height uint) {
  17. i.ViewSize = NewSize(width, height)
  18. }
  19. // SetPoint 设置图片的x、y 坐标
  20. func (i *Basic) SetPoint(x, y float64) {
  21. i.ViewPoint = NewPoint(x, y)
  22. }
  23. // SetFile 设置处理的图片
  24. func (i *Basic) SetFile(file string) {
  25. i.File = file
  26. }
  27. // SetBackground 设置背景色
  28. func (i *Basic) SetBackground(background string) {
  29. i.Background = background
  30. }
  31. // Position 计算裁切的x、y及宽高
  32. func (i *Basic) Position(position string, width, height uint, size *Size) (dx, dy int, dWidth, dHeight uint) {
  33. x := 0
  34. y := 0
  35. scale := 1.0
  36. if width < size.Width {
  37. scale = CustomScale(width, size.Width)
  38. width = size.Width
  39. }
  40. if height < size.Height {
  41. scale = CustomScale(height, size.Height)
  42. height = size.Height
  43. }
  44. paddingLeft := width - size.Width
  45. paddingTop := height - size.Height
  46. if position == "right" {
  47. x = int(paddingLeft)
  48. }
  49. if position == "center" {
  50. x = int(paddingLeft / 2)
  51. y = int(paddingTop / 2)
  52. }
  53. if position == "right|center" {
  54. x = int(paddingLeft)
  55. y = int(paddingTop / 2)
  56. }
  57. if position == "left|center" {
  58. y = int(paddingTop / 2)
  59. }
  60. return x, y, uint(float64(size.Width) * scale), uint(float64(size.Height) * scale)
  61. }