如何在Dart中服务器端加载图片?

4
我看到了使用ImageElement在浏览器端加载图像的答案。但是我想在服务器上进行一些处理,这种方法只适用于浏览器端。
有没有办法在服务器端使用Dart加载和读取PNG的RGBA值?如果没有,是否计划开发任何服务器端图像处理库?
是否有办法以“无头”模式运行Dartium,以便我可以使用画布API执行所需操作?
2个回答

5

有一个 Dart 库可以在服务器端读写 PNG 图像, http://pub.dartlang.org/packages/image

这个库可以读写 PNG 和 JPG 图像,并提供了许多图像处理命令。

例如,使用此库读取 PNG、调整大小并将其保存到磁盘上:

import 'dart:io' as Io;
import 'package:image/image.dart';
void main() {
    // Read a PNG image from file.
    Image image = readPng(new Io.File('foo.png').readAsBytesSync());

    // Resize the image to a 120x? thumbnail (maintaining the aspect ratio).
    Image thumbnail = copyResize(image, 120);

    // Save the thumbnail to disk as a PNG.
    new Io.File('foo-thumbnail.png').writeAsBytesSync(writePng(thumbnail));
}

2

目前市面上还没有相关库。

我一直在使用ImageMagick。你可以使用Process.run()来运行它。以下是一个示例:

Process.run('/usr/local/bin/convert', ['file', '-resize', '100x100']);

是的,我希望有一种纯Dart的方法来做到这一点,很可能是使用无头Dartium。但这确实回答了最初的问题。 - Delaney
1
如果有什么新情况,我会更新我的回答。我也想看到一个用于操作图像的库。我考虑过开发一个,但是我担心时间不够。 - Kai Sellgren
尽管这仍然是一个有效的答案,但更深入地研究使用ImageMagick的CLI进行操作时,似乎没有一种方法可以进行每个像素值的读取。在这种情况下,最好保留我的当前Java版本并直接调用它。 - Delaney
可能想要查看 https://github.com/Serabe/RMagick4J/tree/master/Magick4J/src/magick4j - j_mcnally

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接