2012-05-03 4 views
3

У меня есть страница, которая используется только для печати, а некоторые изображения на ней загружаются через сценарий, который у меня есть. Кажется, всегда уменьшает изображение до 72 точек на дюйм, независимо от того, что я установил imagejpeg() и imagepng() для качества.Загрузка PHP по умолчанию равна 72 dpi, мне нужно 300 dpi

Я использовал свой собственный скрипт, и этот на мерзавец ступице

https://github.com/maxim/smart_resize_image

Я надеялся на мало указаний на сохранение точек на дюйм в оригинальном 300dpi.

Вот мой собственный личный сценарий

if (!empty($_FILES['image']['name'])) //checking if file upload box contains a value 
    { 
     $saveDirectory = 'pics/';   //name of folder to upload to 
     $tempName = $_FILES['image']['tmp_name']; //getting the temp name on server 
     $fileName1 = $_FILES['image']['name'];  //getting file name on users computer 

     $count = 1; 
     do{ 
     $location = $saveDirectory . $_GET['section'] . $count . $fileName1; 
     $count++; 
     }while(is_file($location)); 

     if (move_uploaded_file($tempName, $location)) //Moves the temp file on server 
      {               //to directory with real name 
       $image = $location; 

       // Get new sizes 
       list($width, $height, $type) = getimagesize($image); //gets information about new server image 

       $framewidth = 932; 
       $frameheight = 354; 

       $realwidth = $width; //setting original width and height 
       $realheight = $height; 

       // Load 
       $file1new = imagecreatetruecolor($framewidth, $frameheight); //creates all black image with target w/h 

       if($type == 2){ 
        $source = imagecreatefromjpeg($image); 
        imagecopyresampled($file1new, $source , 0, 0, 0, 0, $framewidth, $frameheight, $realwidth, $realheight); 
       } 
       elseif($type == 3){ 
        $source = imagecreatefrompng($image);  
        imagecopyresampled($file1new, $source , 0, 0, 0, 0, $framewidth, $frameheight, $realwidth, $realheight); 
       } 
       else{ 
        echo "Wrong file type"; 
       } 

       if($type == 2){ 

        //creates jpeg image from file1new for file1 (also retains quality) 
        imagejpeg($file1new, $image,100); 
        //frees space 
        imagedestroy($file1new); 
       } 
       elseif($type == 3){ 

        //creates png image from file1new for file1 (also retains quality) 
        imagepng($file1new, $image,10); 
        //frees space 
        imagedestroy($file1new); 
       } 
       else{ 
        echo "Wrong file type"; 
       } 
      } 
      else 
      { 
       echo '<h1> There was an error while uploading the file.</h1>'; 
      } 
     } 
} 

Edit: Даже если дюйм не ответ, как я вижу JPGs в конкретных не сохраняют эту информацию. Мне нужен способ сохранить эти изображения очень четкими и четкими.

+0

Есть ли у ImageMagick это поведение? Можете попробовать и попробовать. –

+0

Я еще ничего не пробовал с маской изображения. Сейчас я изучаю это. (Я никогда не использовал его раньше). –

+0

Я искал GD для воображения, это просто потрясающе, и вы можете найти так много примеров, чтобы манипулировать изображением, о которых вы никогда не знали, было так просто ... Конечно, если он не может делать то, что вы описали, он все равно будет сосать;) –

ответ

0

Функция, размещенная lorezyra (at) lorezyra (dot) com здесь: http://www.php.net/manual/es/function.imagejpeg.php#85712 может сделать трюк.

+0

Хорошо, я прочитайте функцию, и, похоже, она возвращает xdpi и ydpi. Как я могу использовать эти значения, чтобы сохранить разрешение моих изображений? Кроме того, это похоже на то, что он будет работать только с jpg, для этого конкретного экземпляра мне нужно только поддерживать jpg, но я никогда не понимал, что качество моих изображений никогда не сохраняется, и я обычно допускаю .jpg и .png изображения к быть загружен. Поэтому я хотел бы придумать функцию, которая сможет обрабатывать и то, и другое. –

+0

Я думаю, что эти цифры являются горизонтальной и вертикальной плотностью изображения. –

+0

Да, но как использовать эти цифры? Извините, я просто не знаю. –

3

Если вы создаете изображение и открываете его с помощью браузера, браузер будет уменьшать его до 72 точек на дюйм перед рендерингом. Если вы открываете с помощью gimp/phptoshop/любого редактора изображений, то должен сохранять одинаковое качество. Хотя на экране нет разницы, так как ваш экран 72 dpi.

Не тестировалось в новых браузерах, но это было так, как в netscape и в первых версиях firefox, я предполагаю, что с тех пор он не изменился.

+0

Ну, если я загружаю png (как Photoshop) 300dpi на свой сервер через ftp и сохраняю его через веб-браузер на свой рабочий стол, он остается 300 dpi. Итак, по крайней мере для pngs в firefox 12.0 Windows xp x86, браузер не уменьшит dpi до 72 точек на дюйм. –

+1

Веб-сайт 72 dpi не позволяет показывать более высокое разрешение в Интернете. –

+0

Отправка для других, которые могут наткнуться здесь. Похоже, что это уже не так правильно, так как сейчас почти любой монитор теперь обрабатывает больше dpi. Чтобы узнать, как тарифы для мониторов указаны в этой ссылке: http://www.infobyip.com/detectmonitordpi.php. У мониторов было все 72 DPI, это уже не так. – stefgosselin