Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Безопасное копирование (https://javascript.ru/forum/misc/71523-bezopasnoe-kopirovanie.html)

Lion777 26.11.2017 15:29

laimas, вы хотите сказать, что если подделают сигнатуру, то вы взломаете сайт ?

laimas 26.11.2017 15:30

Lion777,
это ничем не отличается от getimagesize в плане обдурить.

laimas 26.11.2017 15:31

Цитата:

Сообщение от Lion777
что если подделают сигнатуру, то вы взломаете сайт ?

Читайте тему еще раз, есть примечание и о взломе, что повторить еще раз? Речь идет о мусоре, это в первую очередь, и во вторую о возможных вставках.

Lion777 26.11.2017 16:04

Сервер не будут грузить такие осторожности ? )) Это так, чуть дальше от темы )), ведь об этом автор не спрашивал, ну у автора конечно то врятли, а вообще ?

laimas 26.11.2017 16:13

Цитата:

Сообщение от Lion777
Сервер не будут грузить такие осторожности ?

Серверу вообще по барабану чего вы там грузите, ответственность полностью на разработчике. Это как сплошь и рядом при загрузке файла, проверяют то, что после точки, считая, что таким образом все проблемы решены. А то, что можно даже и не напрягаться в таком случае, а просто всякому мусору проставить расширения картинок, и сервер горе разработчика его схавает. Если и вы так будете считать, то и ваш сервер можно завалить мусором.

Sonya 26.11.2017 16:34

Не получается. С самого начала, в этот код вставить,
if($im = imagecreatefromstring(file_get_contents('url'))) {

} else {

}

а главное как узнать "узнали палитру - если truecolor"?
И далее:
"В противном случае сохраняем как GIF - file_put_contents(скачанное посредством file_get_contents)."

<?php
$file = 'https://site.ru/img/image.gif';
$current = file_get_contents($file);
$current .= "imgage/1.gif";
file_put_contents($file, $current);
?>


так не получается, тогда как?

laimas 26.11.2017 17:10

if($f = @file_get_contents('https://site.ru/img/image.gif')) {
    if($im = imagecreatefromstring($f)) {
        //это изображение
        imageistruecolor($im) 
            ? imagejpeg($im, 'path/name.jpg', $quality) //сохранение JPEG/PNG -> JPEG
            : file_put_contents('path/name.jpg', $f); //сохранение GIF/PNG8 -> GIF
        imagedestroy($im);
    } else {
        //иначе мусор
    }
} else //ошибка загрузки

Sonya 26.11.2017 17:24

laimas,
спасибо. А переменная $quality устанавливает качество изображения?

Sonya 26.11.2017 17:28

Анимация сохранилась в формате jpg - name.jpg Причем работает, может оставить так?

laimas 26.11.2017 17:57

Цитата:

Сообщение от Sonya
А переменная $quality устанавливает качество изображения?

Да, по умолчанию 75%, но можете указать свое, например чтобы уменьшить размер на выходе.

Цитата:

Сообщение от Sonya
Анимация сохранилась в формате jpg

JPEG формат не поддерживает анимацию, разберитесь что у вас сохранилось.


PS. Это file_put_contents('path/name.jpg', $f); //сохранение GIF/PNG8 -> GIF - результат моего копирования, а должно быть file_put_contents('path/name.gif', $f);

В зависимости от программы просмотра/браузера, не смотря на расширение ПО покажет анимацию так как опирается не на расширение файла, а на его заголовок.


Часовой пояс GMT +3, время: 22:26.