【问题标题】:Changing image name dynamically using the same source image使用相同的源图像动态更改图像名称
【发布时间】:2013-12-25 05:24:24
【问题描述】:

假设我有一个名为“car.jpg”的图像。

我的网站中有多种语言的商店,客户希望以不同的语言显示同一张图片。就像汽车在法语中被称为voiture,所以图像名称应该是“voiture.jpg”,但它会显示相同的图像,即car.jpg。

此外,在保存/下载图像时,它应该从法国商店另存为 voiture.jpg,从英文商店另存为 car.jpg。

我计划通过后端面板从客户端输入图像的名称,但不知道如何在前端实现这一点。

注意:- 图片不在我的服务器上

我已经快速复制了图像,可以使用它如下,使用类上传,但需要一个比复制图像更好的选择,因为有超过 4000 个图像。

<img src='./media/scene7/car.jpg' alt='car'>

<?php
    include('class.upload.php');

    $img = new Upload('media/scene7/car.jpg');

    if ($img->uploaded) {
        $img->file_new_name_body = 'voiture';
        $img->file_auto_rename = false;
        $img->file_overwrite = true;
        $img->Process('./media/scene7/translated/');
    }else{
    }

    echo "<br /><br />Car is called voiture in French, you are seeing the image of voiture.<br />";
?>
    <img src='./media/scene7/translated/voiture.jpg' alt='car'>

<?php

    if ($img->uploaded) {
        $img->file_new_name_body = 'auto';
        $img->file_auto_rename = false;
        $img->file_overwrite = true;
        $img->Process('./media/scene7/translated/');
    }else{
        echo "not uploaded";
    }

    echo "<br /><br />Car is called auto in German, you are seeing the image of auto.<br />";

?>
    <img src='./media/scene7/translated/auto.jpg' alt='car'>

<?php

    if ($img->uploaded) {
        $img->file_new_name_body = 'coche';
        $img->file_auto_rename = false;
        $img->file_overwrite = true;
        $img->Process('./media/scene7/translated/');
    }else{
        echo "not uploaded";
    }

    echo "<br /><br />Car is called coche in Spanish, you are seeing the image of coche.<br />";

?>
    <img src='./media/scene7/translated/coche.jpg' alt='car'>

<?php
    $img = new Upload('http://s7d7.scene7.com/is/image/zeon/Stack_Mouse');

    if ($img->uploaded) {
        echo 'uploaded image from url';
    }else{
        echo $img->error;
    }
?>

【问题讨论】:

  • 您希望image src 打印voiture.jpg?但使用car.jpg 作为图像?或者同时拥有voiture.jpgcar.jpg 图像并使用所需的图像?我很困惑。
  • 将 car.jpg 复制到 voiture.jpg 某处并将 voiture 链接提供给用户?
  • @Deadpool 我只想有一张图片,即 car.jpg 但在法国商店展示时,它应该显示 voiture.jpg

标签: php image image-processing


【解决方案1】:

您可以将图像作为 blob 存储在数据库中,并按您喜欢的方式命名。

将图像存储为 blob 的优缺点可以从以下链接中找到 php:Store image into Mysql blob, Good or bad?

【讨论】:

  • 但图片不会在我身边,它们将来自 SCENE 7
【解决方案2】:

拥有一个数据库表,其中列出了您希望向用户显示的所有图像文件名,以及它们的真实 URL。例如,该表可能有

+-------------+--------------------------+
|FILENAME     |URL                       |         
+-------------+--------------------------+
|car.jpg      |./media/scene7/car.jpg    |
|voiture.jpg  |./media/scene7/car.jpg    |
|auto.jpg     |./media/scene7/car.jpg    |
|truck.jpg    |./media/scene7/truck.jpg  |
|camion.jpg   |./media/scene7/truck.jpg  |
|lastwagen.jpg|./media/scene7/truck.jpg  |
+-------------+--------------------------+

现在写一个页面image.php,它需要一个文件名作为查询参数。它应该接受查询参数并在数据库表中查找它,然后重定向到它找到的 URL。

然后您可以在页面中包含您的图片,例如

<img src="image.php?file=voiture.jpg" alt="voiture.jpg"/>

当浏览器请求此图片时,您的页面将被调用,图片最终来自.media/scene7/car.jpg

【讨论】:

  • 感谢您的回答
  • 我希望它对你有用,@Deepika。我希望我早点看到你的问题。
【解决方案3】:

您可以制作像“car”=>“car.jpg”和“voiture”=>“car.jpg”这样的哈希表。当客户每次访问voiture.jpg时,您可以返回car.jpg。

【讨论】:

    【解决方案4】:

    您可以通过为每种语言实现一个配置文件来实现这一点。这是解释:-

    假设您有一些图像,例如 user.jpg、profile.jpg 等。 现在创建一个 french.php 文件。

    french.php 文件的结构:-

    <?php
    $lang=array();
    $lang['user']='french_transalation_of_user';
    $lang['profile']='french_transalation_of_profile';
    ?>
    

    以同样的方式添加您想要以法语显示的所有图像名称。现在在网页中动态调用这些名称。您还可以根据需要创建任意数量的 language.php。

    我希望你明白其中的逻辑。抱歉英语不好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-18
      • 1970-01-01
      • 2021-02-04
      相关资源
      最近更新 更多