Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Загрузка png (портится фон)

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
dmaw
Отправлено: 10 Апреля, 2010 - 16:39:17
Post Id



Частый гость


Покинул форум
Сообщений всего: 227
Дата рег-ции: Сент. 2009  
Откуда: Беларусь, Витебск


Помог: 0 раз(а)




При загрузке png-изображений скрипт делает прозрачный фон картинки чёрным, как исправить не знаю, куски моего кода:

PHP:
скопировать код в буфер обмена
  1.         elseif(preg_match('/[.](png)$/', $userfile_name))
  2.         {
  3.                 $im = imagecreatefrompng($_FILES['filename']['tmp_name']);
  4.         }


PHP:
скопировать код в буфер обмена
  1.         $canvas = imagecreatetruecolor($newx, $newy); //новые размеры  
  2.         imagecopyresampled($canvas, $im, 0, 0, 0, 0, $newx, $newy, $imx, $imy);
  3.         $imagejpeg = imagejpeg($canvas, $folder_uploads.$userfile_name_array[0].'.'.$userfile_name_array[1],90);

(Добавление)
Наверное для каждого типа картинки нужно использовать свою функцию, в моём случае imagepng()

Я прав?
 
 Top
Мелкий Супермодератор
Отправлено: 10 Апреля, 2010 - 16:48:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




dmaw пишет:
Наверное для каждого типа картинки нужно использовать свою функцию, в моём случае imagepng()

У jpeg нету прозрачного фона, естественно он пропадает и закрашивается дефолтным цветом - чёрным.


-----
PostgreSQL DBA
 
 Top
z-kzn-z
Отправлено: 10 Апреля, 2010 - 18:50:15
Post Id


Новичок


Покинул форум
Сообщений всего: 45
Дата рег-ции: Апр. 2008  
Откуда: Евпатория


Помог: 0 раз(а)




если хотите сделать, скажем, белый цвет (вместо альфа-канала) в jpg, можно как-то так..
вот я попробовал с png картинкой с прозрачностью, работает

PHP:
скопировать код в буфер обмена
  1. $img = imagecreatefrompng('alpha.png');
  2. $w = imagesx($img);
  3. $h = imagesy($img);
  4.  
  5. $img2 = imagecreatetruecolor($w, $h);
  6. imagefilledrectangle($img2, 0, 0, $w, $h, imagecolorallocate($img2, 255, 255, 255));
  7. imagecopyresampled($img2, $img, 0, 0, 0, 0, $w, $h, $w, $h);
  8.  
  9. imagejpeg($img2, 'new.jpg');


то есть создать новое изображение, залить его белым цветом, и наложить сверху старое


-----
There is nothing impossible...
 
 Top
JustUserR
Отправлено: 11 Апреля, 2010 - 14:10:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




dmaw пишет:
При загрузке png-изображений скрипт делает прозрачный фон картинки чёрным, как исправить не знаю
В принципе можно решить данную проблему со стороны клиента с помощью CSS-опции фильтра filter:chroma(color='#AABBCC') - в таком случае браузер выделит нужные части изображения и сделает их прозраными (Это работает для любых картиночных типов поддерживаемых в теге img Улыбка -и длаее вних подкладываете изображение которым будете заменять фон


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
dmaw
Отправлено: 11 Апреля, 2010 - 18:56:24
Post Id



Частый гость


Покинул форум
Сообщений всего: 227
Дата рег-ции: Сент. 2009  
Откуда: Беларусь, Витебск


Помог: 0 раз(а)




Дело в том, что мне просто необходимо, чтобы фон оставался прозрачным!
 
 Top
altermann
Отправлено: 11 Апреля, 2010 - 20:30:44
Post Id



Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Март 2010  
Откуда: Днепропетровск


Помог: 6 раз(а)




Сохраняй тогда изображение или в .png или в .gif, в .jpg ты не сделаешь прозрачный фон.


-----
Я прирожденный кузнец, я не могу не куя!
 
 Top
dmaw
Отправлено: 12 Апреля, 2010 - 09:37:56
Post Id



Частый гость


Покинул форум
Сообщений всего: 227
Дата рег-ции: Сент. 2009  
Откуда: Беларусь, Витебск


Помог: 0 раз(а)




Мой вопрос касается именно png-изображений.
dmaw пишет:
При загрузке png-изображений скрипт делает прозрачный фон картинки чёрным, как исправить не знаю, куски моего кода:
 
 Top
Мелкий Супермодератор
Отправлено: 12 Апреля, 2010 - 09:53:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




dmaw, про что и говорят:
altermann пишет:
Сохраняй тогда изображение или в .png

Вы сохраняете в jpeg, а jpeg не поддерживает прозрачный фон.
Вы уже на свой вопрос в первом же сообщении ответили.


-----
PostgreSQL DBA
 
 Top
Телевизор
Отправлено: 12 Апреля, 2010 - 12:58:26
Post Id



Посетитель


Покинул форум
Сообщений всего: 369
Дата рег-ции: Март 2010  
Откуда: с яндекса


Помог: 3 раз(а)




паройся в нете насщет png
я сталкивался с ie5 он голубым фоном делает, натыкался на прогу она исправляет это,
я так предполагаю и в тваем случае эта програмка поможет сделать чистый прозрачный фон во многих браузерах.
______________________
попытка не пытка

(Отредактировано автором: 12 Апреля, 2010 - 13:01:40)

 
 Top
dmaw
Отправлено: 12 Апреля, 2010 - 14:07:14
Post Id



Частый гость


Покинул форум
Сообщений всего: 227
Дата рег-ции: Сент. 2009  
Откуда: Беларусь, Витебск


Помог: 0 раз(а)




Пока ничего путного не получается. Фон или чёрный или весь покоцаный, картинка при любом исходе теряет своё качество, подходящих примеров в Интернете не нашёл.
PHP:
скопировать код в буфер обмена
  1. $canvas = imagecreate($snewx, $snewy);
  2. imagecopyresampled($canvas, $im, 0, 0, 0, 0, $snewx, $snewy, $imx, $imy);
  3. imagepng($canvas, $folder_uploads_small.$userfile_name_array[0].'.'.$userfile_name_array[1]);

Прикреплено изображение (Нажмите для увеличения)
тест.jpg
 
 Top
altermann
Отправлено: 12 Апреля, 2010 - 23:37:55
Post Id



Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Март 2010  
Откуда: Днепропетровск


Помог: 6 раз(а)




Попробуй сделать так:
PHP:
скопировать код в буфер обмена
  1. $black=imagecolorclosest($im, 0, 0, 0);
  2. // Задание прозрачности черного цвета фона
  3. imagecolortransparent($im, $black);


перед:
PHP:
скопировать код в буфер обмена
  1. $canvas = imagecreate($snewx, $snewy);
  2. imagecopyresampled($canvas, $im, 0, 0, 0, 0, $snewx, $snewy, $imx, $imy);

(Отредактировано автором: 12 Апреля, 2010 - 23:38:25)



-----
Я прирожденный кузнец, я не могу не куя!
 
 Top
JustUserR
Отправлено: 13 Апреля, 2010 - 16:54:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




dmaw пишет:
Дело в том, что мне просто необходимо, чтобы фон оставался прозрачным!
Не все типы изображений полноценно поддерживают альфа-канал - в данном случае реализацию прозрачности можно понимать как создание подложки и вырезка определенного цвета - это можно сделать с помощью CSS-фильров chroma и opacity к примеру


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
dmaw
Отправлено: 14 Апреля, 2010 - 09:49:59
Post Id



Частый гость


Покинул форум
Сообщений всего: 227
Дата рег-ции: Сент. 2009  
Откуда: Беларусь, Витебск


Помог: 0 раз(а)




altermann, спасибо за попытку, но всё равно не работает. Картинка портится, фон чёрный или грубо обгрызеный.

Нашёл ещё один пример, но и он не хочет делать фон у картинки прозрачным http://forum.php.su/topic.php?fo...=1&topic=530

Дёгтю ещё добавляет полупрозрачная тень, даже если фон становится прозрачным, то тень убожество.
(Добавление)
Вопрос решён,отдельное спасибо создателю форума, поиску Яндекс и конкретно valenok за пример.
 
 Top
altermann
Отправлено: 14 Апреля, 2010 - 15:05:14
Post Id



Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Март 2010  
Откуда: Днепропетровск


Помог: 6 раз(а)




А можешь саму картинку скинуть?
На мыло altermann[at]ua.fm , или здесь выложи


-----
Я прирожденный кузнец, я не могу не куя!
 
 Top
dmaw
Отправлено: 14 Апреля, 2010 - 15:53:14
Post Id



Частый гость


Покинул форум
Сообщений всего: 227
Дата рег-ции: Сент. 2009  
Откуда: Беларусь, Витебск


Помог: 0 раз(а)




Картинку выкладывал выше, а вообще уже всё разрешилось, спасибо.
dmaw пишет:
Вопрос решён,отдельное спасибо создателю форума, поиску Яндекс и конкретно valenok за пример.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB