Potrzebuję sposobu (używając wbudowanych bibliotek PHP) do ściągnięcia obrazu z adresu URL i zapisania go na dysku lokalnym o zmienionej/skalowanej szerokości WIDTH do 150 pikseli. Próbowałam to:PHP - utwórz miniaturkę z adresu URL
Creating a thumbnail from an uploaded image
function makeThumbnails($updir, $img, $id)
{
$thumbnail_width = 134;
$thumbnail_height = 189;
$thumb_beforeword = "thumb";
$arr_image_details = getimagesize("$updir" . $id . '_' . "$img"); // pass id to thumb name
$original_width = $arr_image_details[0];
$original_height = $arr_image_details[1];
if ($original_width > $original_height) {
$new_width = $thumbnail_width;
$new_height = intval($original_height * $new_width/$original_width);
} else {
$new_height = $thumbnail_height;
$new_width = intval($original_width * $new_height/$original_height);
}
$dest_x = intval(($thumbnail_width - $new_width)/2);
$dest_y = intval(($thumbnail_height - $new_height)/2);
if ($arr_image_details[2] == 1) {
$imgt = "ImageGIF";
$imgcreatefrom = "ImageCreateFromGIF";
}
if ($arr_image_details[2] == 2) {
$imgt = "ImageJPEG";
$imgcreatefrom = "ImageCreateFromJPEG";
}
if ($arr_image_details[2] == 3) {
$imgt = "ImagePNG";
$imgcreatefrom = "ImageCreateFromPNG";
}
if ($imgt) {
$old_image = $imgcreatefrom("$updir" . $id . '_' . "$img");
$new_image = imagecreatetruecolor($thumbnail_width, $thumbnail_height);
imagecopyresized($new_image, $old_image, $dest_x, $dest_y, 0, 0, $new_width, $new_height, $original_width, $original_height);
$imgt($new_image, "$updir" . $id . '_' . "$thumb_beforeword" . "$img");
}
}
To wygląda bardzo obiecująco, ale nie mogę dowiedzieć się, jak go używać, a następnie, czy będzie to robić co chcę. Dotyczy/potrzeby:
- Co te params myśli:
($updir, $img, $id)
- Czy$updir
położenie pliku? Lub miejsce, w którym chcę to zapisać? Czy$img
jest uchwyt pliku lub nazwa pliku? Lub nowa nazwa pliku? Do czego służy$id
? Autor nie dał żadnego przykładu użycia. - Ta funkcja wymaga ode mnie określenia WIDTH i HEIGHT. Chcę tylko określić SZEROKOŚĆ i pozwolić wysokości być proporcjonalna.
- muszę ciągnąć obrazy przez 2 różnych typów URL: (1) Podstawowym http://foo ..., oraz (2) składnia dane:
data:image/jpeg;base64,/9j/4AAQ....
- Idealnie chciałabym przekształcić te obrazy we wszystkich przypadkach w dół do skompresowanej miniatury jpeg (szerokość 150px, dowolna wysokość), nawet jeśli oryginalny obraz nie był w formacie jpg.
Jaki jest najlepszy sposób na osiągnięcie tego?
Cóż, opublikowany skrypt wygląda jak jego baza na przesłanych obrazach na serwer, z którego działa, gdzie '$ updir' będzie ścieżką do katalogu zawierającego je, a' $ id' i '$ img' są częścią nazwy pliku dla jakiegoś rodzaju konwencji nazewnictwa. Tak więc w skrócie działałoby to tylko po pobraniu/skopiowaniu plików. – prodigitalson
spójrz na http://stackoverflow.com/a/27362839/3641016, Pod warunkiem, że mała funkcja pomocnika, aby zmienić rozmiar obrazu w różnych trybach. –
Raphael, przybijałeś to. Chcesz zamieścić swoją odpowiedź, abym mógł dać ci nagrodę? – HerrimanCoder