Я заметил, что ответы Mark и sehe's не делают --follow
файлы, то есть останавливаются, как только они достигают переименования файла. Этот сценарий будет намного медленнее, но будет работать для этой цели.
git ls-files |
while read aa
do
printf . >&2
set $(git log --follow --oneline "$aa" | wc)
printf '%s\t%s\n' $1 "$aa"
done > bb
echo
sort -nr bb
rm bb
Из того, что я могу сказать, необходимо установить режим наложения на false
и флаг альфа-канала сохранения к true
прежде , Вы делаете imagecolorallocatealpha ()
<?php
$newImg = imagecreatetruecolor($nWidth, $nHeight);
imagealphablending($newImg, false);
imagesavealpha($newImg,true);
$transparent = imagecolorallocatealpha($newImg, 255, 255, 255, 127);
imagefilledrectangle($newImg, 0, 0, $nWidth, $nHeight, $transparent);
imagecopyresampled($newImg, $im, 0, 0, 0, 0, $nWidth, $nHeight,
$imgInfo[0], $imgInfo[1]);
?>
ОБНОВЛЕНИЕ : Этот код работает только над фоном, прозрачным с непрозрачностью = 0. Если Ваше изображение имеет 0 < непрозрачность < 100 это будет черный фон.
Заполнение нового изображения с прозрачным цветом также требуется (как кодированный Dycey, но я предполагаю, забыл упоминать:)), не только 'стратегическое' сохранение отдельно.
IIRC, также необходимо быть уверены, что PNGs составляют 24 бита, т.е. истинный цвет, и не 8 битов для предотвращения ошибочного поведения.
старый поток, но на всякий случай - пример Дайси должен работать, если вы правильно называете вещи. Вот модифицированная версия, используемая в моем классе изменения размера изображения. Обратите внимание на проверку, чтобы убедиться, что imagecolorallocatealpha () определен, чего не будет, если вы используете GD <2.0.8
/**
* usually when people use PNGs, it's because they need alpha channel
* support (that means transparency kids). So here we jump through some
* hoops to create a big transparent rectangle which the resampled image
* will be copied on top of. This will prevent GD from using its default
* background, which is black, and almost never correct. Why GD doesn't do
* this automatically, is a good question.
*
* @param $w int width of target image
* @param $h int height of target image
* @return void
* @private
*/
function _preallocate_transparency($w, $h) {
if (!empty($this->filetype) && !empty($this->new_img) && $this->filetype == 'image/png')) {
if (function_exists('imagecolorallocatealpha')) {
imagealphablending($this->new_img, false);
imagesavealpha($this->new_img, true);
$transparent = imagecolorallocatealpha($this->new_img, 255, 255, 255, 127);
imagefilledrectangle($this->new_img, 0, 0, $tw, $th, $transparent);
}
}
}