64 if ($data = @file_get_contents(
$url)) {
68 throw new \Intervention\Image\Exception\NotReadableException(
69 "Unable to init from given url (".
$url.
")."
81 $offset = ftell($stream);
83 $data = @stream_get_contents($stream);
84 fseek($stream, $offset);
89 throw new \Intervention\Image\Exception\NotReadableException(
90 "Unable to init from given stream"
101 if (is_resource($this->data)) {
102 return (get_resource_type($this->data) ==
'gd');
115 return is_a($this->data,
'Imagick');
125 return is_a($this->data,
'\Intervention\Image\Image');
135 return is_a($this->data,
'SplFileInfo');
145 return is_a($this->data,
'Symfony\Component\HttpFoundation\File\UploadedFile');
155 if (is_string($this->data)) {
156 return is_file($this->data);
169 return (
bool) filter_var($this->data, FILTER_VALIDATE_URL);
179 if (!is_resource($this->data))
return false;
180 if (get_resource_type($this->data) !==
'stream')
return false;
192 if (is_string($this->data)) {
193 $mime = finfo_buffer(finfo_open(FILEINFO_MIME_TYPE), $this->data);
194 return (substr($mime, 0, 4) !=
'text' && $mime !=
'application/x-empty');
207 $data = $this->decodeDataUrl($this->data);
209 return is_null($data) ?
false :
true;
219 return base64_encode(base64_decode($this->data)) === $this->data;
239 private function decodeDataUrl($data_url)
241 $pattern =
"/^data:(?:image\/[a-zA-Z\-\.]+)(?:charset=\".+\")?;base64,(?P<data>.+)$/";
242 preg_match($pattern, $data_url, $matches);
244 if (is_array($matches) && array_key_exists(
'data', $matches)) {
245 return base64_decode($matches[
'data']);
305 return (
string) $this->data;