我有一个具有透明背景的图像,我想将其复制到另一个图像上,这两个图像都是 png 格式,我尝试使用 boost::gil::rgba8_image_t 但它仍然复制具有灰色背景的透明图像。这就是我用过的
#include <boost/gil.hpp>
#include <boost/gil/extension/io/png.hpp>
#include <boost/gil/extension/numeric/resample.hpp>
#include <boost/gil/extension/numeric/sampler.hpp>
#include <string>
namespace bg = boost::gil;
int main() {
std::string target{"./jail.png"};
std::string picture("./example_in.png");
bg::rgba8_image_t jail;
bg::rgba8_image_t temp;
bg::read_and_convert_image(target, jail, bg::png_tag{});
bg::rgba8_image_t pic(jail.dimensions());
bg::read_and_convert_image(picture, temp, bg::png_tag{});
bg::resize_view(bg::view(temp), bg::view(pic), bg::bilinear_sampler{});
bg::copy_pixels(bg::view(jail), bg::view(pic));
bg::write_view("out.png", bg::view(pic), bg::png_tag{});
}
Run Code Online (Sandbox Code Playgroud) 我一直在尝试分别打印 2 个值,并尝试了以下代码:
import System.Directory
main = getCurrentDirectory >>= \x -> (print <$> doesFileExist x) >> (print <$> doesDirectoryExist x)
Run Code Online (Sandbox Code Playgroud)
但它不打印任何内容,但以下代码工作正常:
import System.Directory
main = getCurrentDirectory >>= \x -> doesFileExist x >>= print >> doesDirectoryExist x >>= print
Run Code Online (Sandbox Code Playgroud)
为什么第一个代码不打印任何内容的任何原因?