Проблемы с изображением при использовании библиотеки GD в PHP
Такая вот проблема: я использую библиотеку GD для того, чтобы с одного сайта перекинуть изображения на другой сайт, но при копировании некоторые изображения становятся блёклыми. В чём может быть проблема?
Вот код:
Код:
$sourceImage = @ImageCreateFromJPEG('http://site1.ru/img/categories/'.$shop1_cat_picture);
if($sourceImage)
{
$jpeg = ImageCreate(140,140);
$imW = imageSX($sourceImage);
$imH = imageSY($sourceImage);
if ($imW < 140 and 140 - $imW > 1)
{
$imLeft = round((140 - $imW)/2);
}
else
{
$imLeft = 0;
}
//
if ($imH < 140 and 140 - $imH > 1)
{
$imTop = round((140 - $imH)/2);
}
else
{
$imTop = 0;
}
imageCopyResized($jpeg, $sourceImage, $imLeft, $imTop, 0, 0, $imW, $imH, $imW, $imH);
if (ImageJPEG($jpeg, '/home/site2.ru/public_html/products_pictures/'.$shop1_cat_picture))
{
echo "Скопировали $shop1_cat_picture!<br>";
}
else
{
"<font color=red>$shop1_cat_picture не скопирована!</font><br>!";
}
ImageDestroy($jpeg);
ImageDestroy($sourceImage);
}
else
{
"<font color=red>Ошибка открытия $shop1_cat_picture!</font><br>!";
}
if($sourceImage)
{
$jpeg = ImageCreate(140,140);
$imW = imageSX($sourceImage);
$imH = imageSY($sourceImage);
if ($imW < 140 and 140 - $imW > 1)
{
$imLeft = round((140 - $imW)/2);
}
else
{
$imLeft = 0;
}
//
if ($imH < 140 and 140 - $imH > 1)
{
$imTop = round((140 - $imH)/2);
}
else
{
$imTop = 0;
}
imageCopyResized($jpeg, $sourceImage, $imLeft, $imTop, 0, 0, $imW, $imH, $imW, $imH);
if (ImageJPEG($jpeg, '/home/site2.ru/public_html/products_pictures/'.$shop1_cat_picture))
{
echo "Скопировали $shop1_cat_picture!<br>";
}
else
{
"<font color=red>$shop1_cat_picture не скопирована!</font><br>!";
}
ImageDestroy($jpeg);
ImageDestroy($sourceImage);
}
else
{
"<font color=red>Ошибка открытия $shop1_cat_picture!</font><br>!";
}
Суть сией манипуляции в том, чтобы подогнать размер исходной картинки под размер 140 на 140 px, не сильно влияя на качество её отображения.
В итоге картинки категорий, которые на главной, изображаются блёклыми, а которые на вложенных страницах - отлично. Я не врублюсь: или это особенность скрипта Shop Script, или особенность дизайна, или при копировании какой-то глюк. Но почему такой точный глюк!... Именно на главное изображения блёкнут. Вот пример:
Укажи именно 2 картинки, а не 2 магазина.
Может это из-за формата исходных картинок? Хотя они все JPEG вроди...
Вместо imagecreate используй imagecreatetruecolor. Почему - думаю сам догадаешься. Ну а нет - сообщи, разъясним.
Спасибо большое!!!
Так точно. Imagecreate создаёт канвас с палитрой в 256 цветов.