Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Изменение одного из полей заголовка JPEG-файла

9.5K
14 апреля 2008 года
Zemik
15 / / 08.10.2005
собственно сабж:

нужно заменить пару полей заголовка JPEG файла, где хранится значение dpi изображения, на свое нужное. Т.е. так чтобы изображение имеющее в заголовке значения в 72 px/inch по горизонтали и вертикали, после обработки становилось равным к примеру 150 или 300 px/inch. Т.е. по сути мне надо заменить пару байтов в JPEG-файле.

Делаю так:
Код:
/*
  параметры $filename, $destination, $widthDpi, $heightDpi уже инициализированы
*/
  $handle = fopen($filename, "rb");
  $segment[] = fread($handle, 2);
  if( $segment[0] === "\xFF\xD8" )
  {
    $segment[] = fread($handle, 1);

    if($segment[1] === "\xFF")
    {
      // Устанавливаем на начало внутренний указатель файла
      rewind ($handle);
      // считаем все байты заново, попарно
      $bytesNumber = 0;
      while(!feof($handle))
      {
        $daten = fread($handle, 2);
        $bytesNumber += 2;

        if( $bytesNumber == 16 )
           $daten = pack("n", $widthDpi );
        if( $bytesNumber == 18 )
           $daten = pack("n", $heightDpi );

        $newfile[] = $daten;
      }
      // Закрываем файл
      fclose($handle);
      // по окончании загрузки появляется новый файл в виде Array
      // файл переобразуется в цепочку данных
      $newfile = implode('',$newfile);

      // вписываем его только в указанных целях
      $handle = fopen($destination, "wb");
      fwrite($handle, $newfile);
      fclose($handle);
      return TRUE;
    }
    else
    {
      return FALSE;
    }
  }
  else
  {
     return FALSE;
  }


... не работает. Винда показывает в свойствах прежнее значение dpi. Мож кто знает что я не так делаю?
24K
14 апреля 2008 года
ostgals
53 / / 27.08.2007
В данном коде замена байтов происходит только в заголовке JPEG-файла...
Может, Винда тогда читает разрешение картинок из метаданных Exif?

Можно попробовать стереть Exif и посмотреть как тогда будет работать...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог