Hỏi về resize hình trong nodejs
-
Mình có chức năng upload hình cho bài viết. làm thế nào đề hình sau khi upload có thể dùng để làm thumbnail ( resize hoặc scale bằng gm ) nhưng mà khi resize hay scale vẫn không như ý mình mong muốn và nó vẫn bị bể .
Thanks
-
Khi đặt câu hỏi về vấn đề này, bạn cần đưa ra hình ảnh trước và sau khi resize, câu lệnh mà bạn sử dụng để resize và mô tả ảnh kỳ vọng. Có như vậy thì người đọc mới có thể hiểu và đưa ra câu trả lời tốt nhất cho bạn.
-
Dùng free API đi bạn, hiện mình đang dùng thằng này thấy khá ổn.
https://rsz.io/
-
code cua mình đây. kết quả ra hình mờ và không đúng size cũng như nó bị bể ea .
-
Mình dùng https://github.com/EyalAr/lwip
dùng Rất tốt.
-
sau khi resize bạn dùng thêm garvity nữa nhé
var imgGm = gm(readstream, filename).resize(new_width, new_height, '^').gravity('Center').crop(new_width, new_height).write(thumbFilePath, function (err) {});
-
vẫn không được bạn ơi. hình ban đầu của mình
hình sau khi resize như code trên
-
-
mình test thử thế này thấy oke mà
var gm = require('gm').subClass({ imageMagick: true });
var imgpath = __dirname + '/img.jpg';
gm(imgpath)
.resize(500, 200, '^')
.gravity('Center')
.crop(500, 200)
.write(__dirname + '/2.jpg', function(err, result) {
console.log(err);
console.log(result);
});
-
có hình được có hình không được đó bạn. mình mới test lại thì nó ra thế này
Hình gốc :
hình resize
-
Mình vẫn chưa rõ về vấn đề kích thước ảnh. Kích thước bạn nhận được là bao nhiêu? Kích thước mong muốn là bao nhiêu?
Còn về vấn đề chất lượng ảnh, hàm
scale
chú trọng vàoperformance
nên chỉ mặc định sử dụngfilter box
nên chất lượng ảnh không cao. Nếu bạn quan tâm đến chất lượng ảnh, bạn nên sử dụng hàmresize
thay choscale
vì hàmresize
sử dụngfilter lanczos
, chạy chậm hơn nhưng cho chất lượng ảnh tốt hơn rất nhiều.
-
@tresdin đã nói trong Hỏi về resize hình trong nodejs:
Mình vẫn chưa rõ về vấn đề kích thước ảnh. Kích thước bạn nhận được là bao nhiêu? Kích thước mong muốn là bao nhiêu?
Còn về vấn đề chất lượng ảnh, hàm
scale
chú trọng vàoperformance
nên chỉ mặc định sử dụngfilter box
nên chất lượng ảnh không cao. Nếu bạn quan tâm đến chất lượng ảnh, bạn nên sử dụng hàmresize
thay choscale
vì hàmresize
sử dụngfilter lanczos
, chạy chậm hơn nhưng cho chất lượng ảnh tốt hơn rất nhiều.resize xong cache lại, kết hợp với dùng optipng, jpegoptim, gifsicle thì chỉ chậm lần đầu, về sau sử dụng vẫn đảm bảo tốc độ cậu ạ
-
@nvs2394 đã nói trong Hỏi về resize hình trong nodejs:
có hình được có hình không được đó bạn. mình mới test lại thì nó ra thế này
Hình gốc :
hình resize
lạ nhỉ, mình vẫn resize bình thường mà, demo này
tapchiviet dot info
-
bạn resize bằng cái code ở trên bạn paste cho mình phải ko. sao bên mình không dc ta
-
@nvs2394 đã nói trong Hỏi về resize hình trong nodejs:
bạn resize bằng cái code ở trên bạn paste cho mình phải ko. sao bên mình không dc ta
đúng rồi bạn, đoạn đó là mình crop rồi pipe luôn ra cùng response nên code nó như này
var cropGravity = 'Center';
var imgGm2 = gm(readstream, filename).resize(new_width, new_height, '^').gravity(cropGravity).crop(new_width, new_height);
imgGm2.stream().pipe(res);
-
cái new_width và new_height mà bạn truyền vào là số hay là phải xử lí gì nữa không bạn.
-
@nvs2394 đã nói trong Hỏi về resize hình trong nodejs:
cái new_width và new_height mà bạn truyền vào là số hay là phải xử lí gì nữa không bạn.
nó là số thôi bạn, mình đặt biến để lấy size theo url ấy mà
-
có lẽ là do cái lấy size (width, height) của mình thì truyền vào (500,200)
đó. chứ code mình thấy giống nhau
-
@nvs2394 đã nói trong Hỏi về resize hình trong nodejs:
có lẽ là do cái lấy size (width, height) của mình thì truyền vào (500,200)
đó. chứ code mình thấy giống nhaubạn thử hardcode xem sao