이미지 :: magick :: read ()와 함께 io :: 스칼라를 어떻게 사용할 수 있습니까?
-
23-08-2019 - |
문제
조작 한 이미지가 있습니다 GD :: 이미지 그리고 나는 더 많은 조작을하고 싶습니다 이미지 :: magick. 이미지를 디스크에 쓰지 않기 위해 이미지 :: magick이 읽을 수 있습니다. image :: Magick의 읽기 기능은 파일 핸들을 매개 변수로 받아들이므로 io :: scalar를 전달하려고합니다. gd :: 이미지의 출력으로 생성 한 개체.
그러나 io :: 스칼라 객체를 문자열로 취급 할 수 있으므로 이미지 :: magick은 이미지의 내용을 찾을 수없는 파일 이름으로 해석하고 ()가 실패합니다.
일반 파일 핸들처럼 동작하는 스칼라에서 파일 핸들을 만들 수있는 또 다른 방법이 있습니까?
my $FH = new IO::Scalar \$image_bin;
my $magick = Image::Magick->new;
my $response = $magick->Read(file => $FH);
$ 응답은 다음과 같습니다.
"Exception 435: unable to open image `????': No such file or directory"
해결책
나는 당신이 찾고 있다고 생각합니다 Blobtoimage:
#!/usr/bin/perl
use strict;
use warnings;
use File::Slurp;
use Image::Magick;
my $image_bin = read_file 'test.jpg', binmode => ':raw';
my $magick = Image::Magick->new;
$magick->BlobToImage( $image_bin );
$magick->Resize( geometry => '64x64' );
$magick->Write( 'test-out.jpg' );
__END__
다른 팁
Perl 파일 핸들에서 GIF 형식의 이미지를 읽으려면 다음을 사용하십시오.
$image = Image::Magick->new; open(IMAGE, 'image.gif'); $image->Read(file=>\*IMAGE); close(IMAGE);
그래서 ... 파일 핸들에 대한 참조라고 생각합니다 (\$FH
) 당신의 예에서, 파일 핸들 대신에 트릭을 수행해야합니까?
편집 : Brian D Foy에 응답하기 위해 이것이 제가 시도한 것입니다.
my $image = Image::Magick->new;
open my $fh, 'image.gif';
binmode $fh;
$image->Read( file => \$fh );
close $fh;
내 시스템에서는 적어도이 SEG 결함이 있습니다.
나는이 게시물이 작동하지 않는 것이 예로 들게하겠습니다. :피
제휴하지 않습니다 StackOverflow