mirror of
https://github.com/xiaoqidun/ofdgo.git
synced 2026-10-29 14:53:44 +08:00
1 parent
307e3a718a
commit
6e8eb7cfcc
3 files changed
+21
-3
No files matched your search
@@ -10,7 +10,7 @@ require (
|
|||||||
github.com/tdewolff/font v0.0.0-20261010204837-88a7f6b56918
|
github.com/tdewolff/font v0.0.0-20261010204837-88a7f6b56918
|
||||||
github.com/xiaoqidun/j2kgo v1.0.1
|
github.com/xiaoqidun/j2kgo v1.0.1
|
||||||
github.com/xiaoqidun/jbig2 v1.1.7
|
github.com/xiaoqidun/jbig2 v1.1.7
|
||||||
github.com/xiaoqidun/pdfgo v0.0.0-20261015080813-04cab548eee1
|
github.com/xiaoqidun/pdfgo v0.0.0-20261015084227-8b2c590c8095
|
||||||
golang.org/x/crypto v0.58.0
|
golang.org/x/crypto v0.58.0
|
||||||
golang.org/x/image v0.47.0
|
golang.org/x/image v0.47.0
|
||||||
golang.org/x/text v0.43.0
|
golang.org/x/text v0.43.0
|
||||||
|
|||||||
@@ -62,8 +62,8 @@ github.com/xiaoqidun/j2kgo v1.0.1 h1:W0SytzjvgiOhXwq+JNRSVKLB847fjGOvGWTNKqmwvo0
|
|||||||
github.com/xiaoqidun/j2kgo v1.0.1/go.mod h1:DCwAfuDzCDYqUiAlZ7BDwigTjaXw7o9L1FtEma/D1aA=
|
github.com/xiaoqidun/j2kgo v1.0.1/go.mod h1:DCwAfuDzCDYqUiAlZ7BDwigTjaXw7o9L1FtEma/D1aA=
|
||||||
github.com/xiaoqidun/jbig2 v1.1.7 h1:118d2lQn2ZsupmXazK+2p23Jp5xQ09btBmPUoYoa/+Y=
|
github.com/xiaoqidun/jbig2 v1.1.7 h1:118d2lQn2ZsupmXazK+2p23Jp5xQ09btBmPUoYoa/+Y=
|
||||||
github.com/xiaoqidun/jbig2 v1.1.7/go.mod h1:9jromqVwMqlptUDEt6Yip8vqYA5I1YjhG7FgMl/Z2dA=
|
github.com/xiaoqidun/jbig2 v1.1.7/go.mod h1:9jromqVwMqlptUDEt6Yip8vqYA5I1YjhG7FgMl/Z2dA=
|
||||||
github.com/xiaoqidun/pdfgo v0.0.0-20261015080813-04cab548eee1 h1:j0HPne+OoMJt3moQyurnlWfMsVd0SyCmEl/epSOIpG4=
|
github.com/xiaoqidun/pdfgo v0.0.0-20261015084227-8b2c590c8095 h1:lkK0xbGXJIKvH9zgKtf94HiGt35krCmy8EESPUCxRFE=
|
||||||
github.com/xiaoqidun/pdfgo v0.0.0-20261015080813-04cab548eee1/go.mod h1:FUQ8+TfNoec6tZCdsckx+rrD25JACm7EzuZyFH37QHg=
|
github.com/xiaoqidun/pdfgo v0.0.0-20261015084227-8b2c590c8095/go.mod h1:FUQ8+TfNoec6tZCdsckx+rrD25JACm7EzuZyFH37QHg=
|
||||||
github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU=
|
github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU=
|
||||||
github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E=
|
github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E=
|
||||||
github.com/yuin/goldmark v1.8.5 h1:r6N5afV5qj/5S4UTch8agZHJ8UxNCMwX7WjkkJam2NA=
|
github.com/yuin/goldmark v1.8.5 h1:r6N5afV5qj/5S4UTch8agZHJ8UxNCMwX7WjkkJam2NA=
|
||||||
|
|||||||
@@ -265,9 +265,27 @@ func DrawPixels(dst draw.Image, src image.Image, m [6]float64, op draw.Op) {
|
|||||||
if drawRasterAxisImage(dst, src, m, op) {
|
if drawRasterAxisImage(dst, src, m, op) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
src = rasterTransformSource(src, TransformBounds(b, m, dst.Bounds()))
|
||||||
draw.CatmullRom.Transform(dst, f64.Aff3{m[0], m[2], m[4], m[1], m[3], m[5]}, src, b, op, nil)
|
draw.CatmullRom.Transform(dst, f64.Aff3{m[0], m[2], m[4], m[1], m[3], m[5]}, src, b, op, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// rasterTransformSource 为放大的通用图像缓存十六位预乘像素,限制临时缓冲大小
|
||||||
|
// 入参: src 源图像, affected 目标采样区域
|
||||||
|
// 返回: image.Image 等值采样图像
|
||||||
|
func rasterTransformSource(src image.Image, affected image.Rectangle) image.Image {
|
||||||
|
switch src.(type) {
|
||||||
|
case *image.RGBA, *image.RGBA64:
|
||||||
|
return src
|
||||||
|
}
|
||||||
|
b := src.Bounds()
|
||||||
|
if b.Empty() || affected.Empty() || b.Dx() > rasterScaleBufferLimit/8/b.Dy() || float64(affected.Dx())*float64(affected.Dy()) < float64(b.Dx())*float64(b.Dy()) {
|
||||||
|
return src
|
||||||
|
}
|
||||||
|
pixels := image.NewRGBA64(b)
|
||||||
|
draw.Draw(pixels, b, src, b.Min, draw.Src)
|
||||||
|
return pixels
|
||||||
|
}
|
||||||
|
|
||||||
// rasterScaleBounds 检查变换是否可无几何取整地使用缩放器,并限制其中间缓冲
|
// rasterScaleBounds 检查变换是否可无几何取整地使用缩放器,并限制其中间缓冲
|
||||||
// 入参: b 源边界, m 像素变换
|
// 入参: b 源边界, m 像素变换
|
||||||
// 返回: image.Rectangle 缩放边界, bool 是否适用
|
// 返回: image.Rectangle 缩放边界, bool 是否适用
|
||||||
|
|||||||
Reference in new issue
Block a user