이미지 :: magick :: read ()와 함께 io :: 스칼라를 어떻게 사용할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/899505

  •  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 결함이 있습니다.

나는이 게시물이 작동하지 않는 것이 예로 들게하겠습니다. :피

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top